2010-11-23 5 views
0

Ich bin neu in MVC und versuche, AJAX Anrufe und Modellvalidierung Kopf zu bekommen. Hier ist, was ich habe:Wie kann ich PartialView-, AJAX- und Modellvalidierungsattribute in ASP.NET MVC nutzen?

Eine Controller-Aktion, die eine Ansicht mit einem einzelnen Textfeld und einem Link dient. Die Ansicht wie folgt aussieht:

<div> 
... 
<input type="text" name="registration" value=""/><a id="checkRegoLink" href="#">Check rego</> 
... 
</div> 

Die checkRegoLink hat eine POST $ Schnipsel() Aufruf einer Aktion, die eine PartialViewResult dient.

$.ajax({ 
    url:"/Entry/CheckRego", 
    type: "POST", 
    data: {...stuff...}, 
    success: function (data, status, request){ 
    $("#target").html(data); 
    }, 
}); 

Die PartialViewResult dient eine stark typisierte Teilansicht _CreateEntry. Das Modell für diese Ansicht enthält einige Attribute für verschiedene Eigenschaften. Hier ist ein Ausschnitt aus dieser Teilansicht:

@model namespace.EntryModel 
@{ Html.EnableClientValidation(); } 
@using (Html.BeginForm("CreateEntry", "Entry", FormMethod.Post)) 
{ 
...various entry fields, labels and stuff... 
<input type="submit" value="Add Entry"/> 
} 

Meine Frage ist, wie kehre ich, dass Teilansicht wieder in die $("#target") div komplett mit Validierung Fehlermeldungen. In der Controller-Aktion, die den POST aus der stark typisierten Sicht akzeptiert habe ich versucht return PartialView("_CreateEntry",model) - aber das die Teilansicht selbst, mit Validierung Fehlermeldungen, aber natürlich, ohne das übergeordnete Layout.

Alle Ideen würden sehr geschätzt werden. Mir geht es langsam besser, wenn ich abstimme und Antworten akzeptiere. Bitte entschuldigen Sie meine niedrigen Werte - ich werde die Antworten definitiv ablehnen und sie akzeptieren, wenn ich gehe.

Danke, Dany.

PS. Ich verwende MVC 3 neueste RC

Antwort

0

Versuchen Sie mit Ajax.BeginForm() anstelle von Html.BeginForm(). Schau dir die Verwendung an, es sollte dir erlauben, verschiedene Optionen anzugeben, einschließlich des zu aktualisierenden Divs. Sofern Sie Gründe dafür haben, dies manuell zu tun, warum manuell tun, was bereits eingebaut ist?

Edit:

Sie sagen: „Meine Frage ist, wie ich, dass Teilansicht zurück in die $ kehren (“ # target „) mit Validierungsfehlermeldungen vervollständigen div.“

Dann sagen Sie "... aber das die Teilansicht selbst zurückgibt, komplett mit Validierungsfehlermeldungen, aber natürlich ohne das übergeordnete Layout." < - ist das nicht genau das, was du willst?

Wollen Sie das nicht? Die Teilansicht mit Validierungsfehlern vervollständigt?

+0

Ja, Sie haben absolut Recht - ich hatte ein bisschen eine Gehirnblockade früher. Ich werde schließlich Ajax.BeginForm() betrachten, aber jetzt habe ich es geschafft, es manuell mit $ .ajax() jquery Anruf zu verbinden. Eine Frage allerdings - wenn ich Ajax.BeginForm() innerhalb der Teilansicht verwende, kann ich ein div außerhalb davon anvisieren, dh. in der Elternansicht? – codedog

+0

Ich bin nicht sicher, ob Sie es ausprobieren sollten. – Jack

Verwandte Themen