这是我在ASP.NET中尝试做的事情:
创建一个名为Main.aspx的页面。此页面有一个DIV和一个按钮。
浏览器加载Main.aspx。然后当我单击按钮时,我想动态地将页面Page99.aspx加载到Main.aspx中的DIV中,但是没有Main.aspx需要回发。
因此,Main.aspx加载一次,此后Main.aspx中显示的所有内容将来自不同的.aspx页面。
PS。 我正在寻找上面的解决方案,但不使用框架。
更新1
我应该提一下,Page99不是一个简单的HTML页面。它将包含Web控件。
据我所知,除非使用iframe,否则无法将一个aspx页面加载到另一个页面中。
使用回发或ajax,您可以使用UserControls(ascx)。它们可以包含几乎相同的页面内容,或者使用MasterPage。
如果你希望没有回发,ajax可能是要走的路,尽管如此,它不允许你将aspx页面加载到另一个页面,只是为了改变你所在页面的内容(除其他外)。
我不确定其他用于Web开发的平台,他们可能有一个更接近你想做的解决方案,所以如果asp.net不是“必须”,你应该考虑检查其他平台。
如果您不想使用iFrame,您可以很好地使用HTML的Object元素。按照这里查看和html示例。你可以很好地使用它来为aspx做一些改变,比如使用OnClientClick属性来获取aspx按钮等。
<!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>
如果您正在使用AJAX工具包,则可以使用webcontrol而不是ASPX页面来执行此操作。
如果你试图使用ASPX页面来实现这个想法,而不使用iframe,你会发现没有为javascript变量名和元素id提供隔离,因此如果你使用innerHTML将渲染的aspx内容放入div中,几乎可以保证冲突;该页面肯定无法像我想象的那样执行部分回发。
使用webcontrol:更好的解决方案是安装AJAX工具包(如果尚未安装),并使用updatepanel控件。在此面板中动态加载和卸载webcontrol(使用LoadControl()),或在其中放置Multiview控件并更改activeview以模拟更改此内容。
updatepanel将允许其内容在没有完整回发(页面刷新)的情况下进行更新。
我认为你可以使用AJAX和服务器上的Web方法来做到这一点。
页面上的按钮使用AJAX调用Web方法,并使用各种参数将正确的页面加载到DIV中。
Web方法使用普通Web请求加载正确的页面。
例如:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://servername/filename.aspx");
WebResponse response = request.GetResponse();
然后该方法将ASPX文件生成的HTML返回给客户端。
当客户端获得回调时,它可以解码HTML并将其放入div中。
例如:
var startOfHTML = response.indexOf('<');
var endOfHTML = response.indexOf('</string>');
response = response.substring(startOfHTML, endOfHTML);
response = response.replace(/</g, "<");
response = response.replace(/>/g, ">");
var div = document.getElementById("myDIV");
div.innerHTML = response;