2013-04-18 18 views
6

Ich habe dieses kleine Problem ... Ich habe diese asp.net Website. Ich habe ein Menü, alles mit HTML und CSS getan. Wenn ich also auf Home klicke, lädt der Ajax den anderen Inhalt in das angegebene div-Element. Arbeiten 100%.jQuery AJAX und ASP.NET

In den Inhalt, der in das div-Element geladen wurde, habe ich eine Schaltfläche. Eine ASP.NET-Schaltfläche.

Wenn ich auf die Schaltfläche klicke, bekomme ich eine "Die Ressource kann nicht gefunden werden." Error.

Es muss etwas sein, das ich vermisse. Wenn Sie nicht verstehen, heres die Ajax:

//Load the Home page on click. 
$(document).ready(function() { 
    $('.home').click(function() { 
     $("#content").load("html/home/home.aspx"); 
    }); 
}); 

nun die aspx-Seite, die in den Inhalt div geladen wurde, zeigt eine Schaltfläche, 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> 

Wenn ich auf diese Schaltfläche klicken, wird der Fehler erscheint.

Was ich erreichen möchte ist: Wenn der Benutzer auf die Schaltfläche klickt, wird der Text in txtAddNewBlog in eine Datenbank aufgenommen. Jetzt kann ich mit C# erreichen ... aber nicht, wenn dieser Fehler in meiner Art ist. Irgendwelche Ideen?

+0

Gibt es 'html/home/home.aspx'? Sehen Sie sich die Netzwerkanfrage an, die der Browser sendet. Navigieren Sie zu dieser URL, um sicherzustellen, dass sie existiert. – Danny

+0

Ja, es existiert, weil der Ajax den ganzen Inhalt in home.aspx in #content lädt und ich kann es sehen. aber wenn ich auf die Unterseite klicke. Das funktioniert, wenn ich keinen ajax habe, der den Inhalt lädt ... aber wenn Ajax kommt, funktioniert es nicht mehr –

+1

Wird der '# Inhalt' in eine andere Form gebracht? Wenn ja, dann brechen Sie die HTML-Struktur, wenn Sie die andere Seite laden. – Aristos

Antwort

1

Das Problem wird die form wird, die erstellt wird. Wenn Sie diese Anforderung stellen, erstellt ASP.NET ein Formular mit dem Ziel home.aspx, nicht den vollständigen Pfad dazu. Aber Sie speichern dieses Formular auf einer HTML-Seite, die auf einer anderen Ebene ist.

Wenn Sie eine Formular-Post machen, versucht es, auf home.aspx zu veröffentlichen, relativ zu wo der Browser denkt, dass es zwei Ebenen höher ist, und es findet es nicht.

Ich weiß nicht, ob es eine gute Möglichkeit gibt, dies zu tun - ASP.NET soll nicht mit so etwas umgehen. Sie können ein IFRAME tun. Sie können den Inhalt home.aspx in ein Benutzersteuerelement einschließen und das ASP.NET-Formular auf der äußeren Seite belassen. Oder Sie können das Ziel des Formulars manipulieren, sodass Sie es an der richtigen Stelle veröffentlichen. Aber ich denke nicht, dass das viel Spaß machen würde.

+0

also ist es besser, Webforms zu erstellen und nur "Response.Redirect" sie und laden Sie die ganze Seite neu ??? –

+0

Meine Meinung, ja, mit der aktuellen Architektur wäre die beste Wette, tatsächlich umzuleiten, anstatt AJAX-ify es. Der Benutzer muss sich mit Neuladen von Seiten befassen, aber der größte Teil des Webs funktioniert immer noch auf diese Weise. Wenn Sie das vermeiden möchten, empfehle ich, eine Lösung ohne den ASP.NET-WebForms-Seitenlebenszyklus zu erstellen - Einzelseiten-Apps sind im Allgemeinen sehr JavaScript-intensiv, sodass sich die Architektur von einer herkömmlichen WebForms-App unterscheidet. Ihr Servercode kann traditionelle Markups und Posts erstellen und die Navigation für den Client-Code beibehalten. –