Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display an ASPX in another ASPX's DIV dynamically at runtime?

Here is what I am trying to do in ASP.NET:

Create one page called Main.aspx. This page has a DIV and a buttons.

The browser loads Main.aspx. Then when I click the button, I want to load page Page99.aspx into the DIV in Main.aspx dynamically, but without Main.aspx requiring a postback.

So, Main.aspx loads once, and thereafter all the content displayed in Main.aspx will come from different .aspx pages.

Ps. I'm looking for a solution as above, but not using frames.

UPDATE 1 I should mention that Page99 is not a simple HTML page. It will contain Web controls.

like image 917
Liao Avatar asked Jan 20 '10 05:01

Liao


2 Answers

If you don't want to use the iFrames, you can very well use Object element of HTML. Follow here to see and html example. You can very well use this for aspx also with some change, like using OnClientClick property for aspx button etc.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>mouseover image position</title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

<style type="text/css">
/*<![CDATA[*/
body
   {
    background-color:#aaaaff;
   }
#one
   {
    position:absolute;
    left:50%;
    top:50%;
    margin:-150px 0 0 -250px;
   }
object
   {
    width:500px; 
    height:300px; 
    border:solid 1px #000000;
   }
 /*//]]>*/
</style>

<script type="text/javascript">
//<![CDATA[
// written by: Coothead
function updateObjectIframe(which){
    document.getElementById('one').innerHTML = '<'+'object id="foo" name="foo" type="text/html" data="'+which.href+'"><\/object>';
}

//]]>
</script>

</head>
<body>

<div id="one">
<object id="foo" name="foo" type="text/html" data="http://www.w3schools.com/"></object>
</div>
<div>
<a href="http://www.google.com" onclick="updateObjectIframe(this); return false;">this is an object test not an iframe test</a>
</div>

</body>
</html>
like image 182
Rajeev Ranjan Lal Avatar answered Oct 14 '22 11:10

Rajeev Ranjan Lal


As far as I know, barring the use of iframes, there is no way to load one aspx page into another.

With postbacks or ajax, you can use UserControls (ascx) instead. They can contain pretty much the same content a page can anyway, or use a MasterPage.

If you wish to have no postbacks, ajax is probably the way to go, though again, it does not allow you to load an aspx page into another, only to change the content of the page you're on (amongst other things).

I'm not sure about other platforms for web development though, they may have a solution closer to what you want to do, so if asp.net is not a "must", you should consider checking out other platforms.

like image 36
SirDemon Avatar answered Oct 14 '22 11:10

SirDemon