【问题标题】:jQuery AJAX and ASP.NETjQuery AJAX 和 ASP.NET
【发布时间】:2013-04-18 18:23:31
【问题描述】:

我有这个小问题... 我有这个 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 以确保它存在。
  • 是的,它存在,因为 ajax 将 home.aspx 中的所有内容加载到 #content 中,我可以看到它。但是当我点击按钮时。这在我没有 ajax 加载内容时有效......但是当 ajax 进来时它不再工作了
  • #content 是否放置在其他表单中?如果是,那么您在加载其他页面时会破坏 html 结构。

标签: javascript jquery asp.net


【解决方案1】:

问题将在于创建的form。当您发出该请求时,ASP.NET 将构建一个目标为home.aspx 的表单,而不是它的完整路径。但是您将该表单转储到处于不同级别的 HTML 页面上。

当您进行表单发布时,它会尝试发布到 home.aspx,相对于浏览器认为的位置,即高两个级别,但它没有找到它。

我不知道是否有一个好的方法来做到这一点 - ASP.NET 并不意味着处理这种事情。你可以做一个 IFRAME。您可以将home.aspx 内容包装到用户控件中,并将 ASP.NET 表单留在外部页面上。或者您可以操纵表单的目标,以便发布到正确的位置。但我认为这些都不会很有趣。

【讨论】:

  • 所以最好创建网络表单,然后“Response.Redirect”它们并重新加载整个页面???
  • 我认为,是的,对于当前的架构,最好的选择是实际重定向而不是 AJAX 化它。用户必须处理页面重新加载,但大多数网络仍然以这种方式工作。如果您想避免这种情况,我建议您构建一个没有 ASP.NET WebForms 页面生命周期的解决方案 - 单页应用程序通常需要大量 javascript,因此架构与传统的 WebForms 应用程序有很大不同。您的服务器代码可以处理构建传统标记和帖子,将导航留给客户端代码。
猜你喜欢
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 2011-01-12
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 2012-02-29
相关资源
最近更新 更多