我在名为“Graphics”的文件夹中有一个.aspx页面。
在该页面(DisplayArena.aspx)中,我使用jQuery.load将另一个.aspx页面“加载”到这样的div中:
//in DisplayArena.aspx
//load from the "BossEncounters" folder
$(document).ready(function () {
$("#mainGamingArena").load('../BossEncounters/encounterGenerator.aspx?ID=<%= Session("currentID") %>');
});
它可以很好地加载遇到生成器,但每当我需要在该页面上提交/发布任何内容时,它认为URL应为“/Graphics/encounterGenerator.aspx”而不是“/BossEncounters/encounterGenerator.aspx”。 / p>
所以我最终收到404错误,错误页面显示:
请求的网址:/ Graphics/encounterGenerator.aspx
我不确定它在哪里或为何改变这样的道路。它不在我的代码中,它必须是某种幕后处理,我找不到它。
我的项目是Visual Studio设置如下:
Game_WebApp
/Graphics
/BossEncounters
有什么想法吗?
答案 0 :(得分:1)
您无法将另一个ASPX页面动态加载到ASPX页面。最终会出现两个这样的表单标签 -
<form method="post" ..>
<form method="post" ..>
...
</form>
</form>
结果,您无法将页面发回服务器。 ASP.NET Web Form Technology不允许在单个页面中使用两个表单标记。你无能为力。
答案 1 :(得分:1)
如果您需要页面的一部分,请尝试实现自己的UserControl
,这正是它们被引入的原因。它与aspx
非常相似,具有相同的事件周期,并且很容易created from a web page。
您的代码将如下:
<!-- DisplayArena.aspx -->
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc" TagName="Boss"
Src="~/Controls/EncounterGenerator.ascx" %>
<html>
<body>
<form runat="server">
<uc:Boss id="boss1"
runat="server"
/>
</form>
</body>
Session
将可用,因此无需传递标记。您还可以通过属性为用户控件提供一些参数。我鼓励您阅读完整的MSDN部分。
另一种方法是使用Server.Transfer
方法,但这实际上是一个接一个地调用两个网页,而不是另一个网页。