触发POST / Submit时,Web应用程序会自动更改URL

时间:2017-04-07 18:52:24

标签: jquery asp.net .net visual-studio-2015 .net-4.5

我在名为“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

有什么想法吗?

2 个答案:

答案 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方法,但这实际上是一个接一个地调用两个网页,而不是另一个网页。