jQuery AJAX 和 ASP.NET

6
我有一个小问题... 我有一个asp.net网站。 我有一个菜单,全部由html和css完成。 因此,当我点击主页时,ajax会将其他内容加载到指定的div元素中。 100%工作。
在加载到div元素中的内容中,我有一个按钮。一个ASP.NET按钮。
当我点击按钮时,它会给我一个“找不到资源”的错误。
肯定是我漏掉了什么。如果您不明白,请看这里的ajax:
//Load the Home page on click.
$(document).ready(function () {
    $('.home').click(function () {
        $("#content").load("html/home/home.aspx");
    });
});

现在加载到内容div中的aspx页面显示一个按钮btnAdd:
<asp:Panel ID="pnlAddNewBlog" runat="server">
    <asp:TextBox ID="txtAddNewBlog" runat="server" TextMode="MultiLine"></asp:TextBox>
    <br />
    <asp:Button ID="btnAdd" runat="server" Text="Add" />
</asp:Panel>

当我点击那个按钮时,会出现错误。

我的目标是:当用户单击该按钮时,将txtAddNewBlog中的文本添加到数据库中。使用C#可以实现这一点......但如果出现这个错误就不能实现。有什么想法吗?


html/home/home.aspx 存在吗?尝试查看浏览器发送的网络请求。导航到该URL以确保它存在。 - Danny
是的,它存在,因为ajax将home.aspx中的所有内容加载到#content中,我可以看到它。但是当我点击按钮时,这个功能就失效了。当没有ajax加载内容时,它是有效的...但是当ajax介入时,它就不再起作用了。 - Fred
1
#content 是否放在其他表单中?如果是,则在加载其他页面时会破坏 HTML 结构。 - Aristos
1个回答

1
问题将在创建的form上出现。当您发出请求时,ASP.NET会构建一个目标为home.aspx而不是完整路径的表单。但您正在将该表单转储到位于不同级别的HTML页面上。
当您进行表单提交时,它尝试相对于浏览器所在位置的home.aspx发布,并且它找不到它。
我不知道是否有好的方法来解决这个问题 - ASP.NET不适用于处理这种类型的事情。您可以使用IFRAME。您可以将home.aspx内容包装到用户控件中,并在外部页面上保留ASP.NET表单。或者您可能能够操作表单的目标,以便您发布到正确的位置。但我认为这些都不会很有趣。

那么,是创建Web表单并仅使用“Response.Redirect”重载整个页面更好呢? - Fred
我的意见是,使用当前的架构,最好的选择是实际重定向而不是将其AJAX化。用户必须处理页面重新加载,但大多数Web仍然以这种方式工作。如果您想避免这种情况,我建议构建一个没有ASP.NET WebForms页面生命周期的解决方案-单页应用程序通常需要非常依赖JavaScript,因此架构与传统的WebForms应用程序非常不同。您的服务器代码可以处理构建传统标记和帖子,留下客户端代码进行导航。 - Joe Enos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接