2009-04-18 4 views
2

Ich bin sehr neu in der AJAX und Javascript-Welt und ich versuche zu implementieren Scott Hanselman's Beispiel der Formularübergabe, um einen Teil einer Seite zu aktualisieren. Ich habe sein Beispiel fast wortwörtlich kopiert und ich kann es anscheinend nicht zur Arbeit bringen. Wenn ich auf die Senden-Schaltfläche klicke, wird die Controller-Aktion erfolgreich aufgerufen, aber das Ergebnis wird im Browser als neue Seite gerendert, anstatt nur den Bereich zu aktualisieren, den ich im Ajax-Formular angegeben habe.Wie bekomme ich Ajax-Formular-Übermittlungen, um in ASP.net MVC zu arbeiten?

Hier ist meine Ansicht Code:

<asp:Content ID="indexHead" ContentPlaceHolderID="head" runat="server"> 
    <title>Home Page</title> 
</asp:Content> 

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server"> 

    <% using (Ajax.BeginForm("TestAction", new AjaxOptions { UpdateTargetId = "target" })) 
     { %> 

     <%= Html.TextBox("TextBox")%> 
     <input type="submit" value="Submit" /> 
     <span id="target" /> 

    <% } %> 

</asp:Content> 

Und mein Controller-Aktion:

public string TestAction(string TextBox) 
    { 
     return TextBox; 
    } 

Und ich habe die folgenden Zeilen in der Masterseite

<script src="../../Scripts/MicrosoftMvcAjax.debug.js"type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 

Aber es inbegriffen scheint zu tun ist, rufen Sie die Aktion und rendern das Ergebnis als eine neue Seite, anstatt den Zielbereich zu aktualisieren. Hier sind einige kleine Screenshots, um zu veranschaulichen, was passiert.

Screenshot 1 http://martindoms.com/scr1.JPG

Screenshot 2 http://martindoms.com/scr2.JPG

Irgendwelche Ideen?

Antwort

4

Sie haben das JavaScript-Include in Ihrer Masterseite in der falschen Reihenfolge. Reorder, so dass MicrosoftAjax.js ist der erste der drei und es wird funktionieren.

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
0

Werfen Sie einfach ein paar Ideen da draußen ...

http://www.asp.net/learn/MVC/tutorial-33-cs.aspx

Ihre Controller-Aktion in einer Klasse wie so definiert ist?

public class MyController : Controller 

Offenbar muss der Name der Klasse mit dem Wort Controller enden.

+0

Ich benutze die Standard HomeController ja, es heißt HomeController und erweitert Controller. –