2013-04-18 62 views
6

我有这个小问题... 我有这个asp.net网站。 我有一个菜单,全部用html和css完成。 所以当我点击home时,ajax会将其他内容加载到指定的div元素中。 工作100%。jQuery AJAX和ASP.NET

在加载到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#实现这个功能了......但是如果这个错误出现在我的方式中,则不会。有任何想法吗?

+0

是否存在'html/home/home.aspx'?尝试查看浏览器发送的网络请求。导航到该URL以确保其存在。 – Danny

+0

是的,它存在,因为ajax将home.aspx中的所有内容加载到#content中,我可以看到它。但是当我点击底部时。这工作时,我没有ajax加载内容...但是当ajax进来时,它不再工作 –

+1

是否##内容放在一些其他形式?如果是,那么当你加载其他页面时,你会破坏html结构。 – Aristos

回答

1

的问题将是时生成的form。当你提出这个请求时,ASP.NET将建立一个目标为home.aspx的表单,而不是完整的路径。但是您将该表单转储到不同级别的HTML页面上。

当你做一个表单发布时,它会尝试发布到home.aspx,相对于浏览器认为它的地方,这是两个级别,并且它没有找到它。

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

+0

所以是更好地创建webforms和只是“Response.Redirect”他们并重新加载整个页面? –

+0

我认为,对于目前的体系结构,最好的办法是实际重定向而不是AJAX,如果它。用户必须处理页面重新加载,但大多数网络仍然以这种方式工作。如果你想避免这种情况,我建议在没有ASP.NET WebForms页面生命周期的情况下构建一个解决方案 - 单页面应用程序通常是JavaScript密集型的,所以这个架构与传统的WebForms应用程序会有很大的不同。您的服务器代码可以处理构建传统标记和帖子,留下用于客户端代码的导航。 –