2016-08-02 28 views
1

Hier ist meine Controller-Aktion:MVC Ajax.BeginForm nicht angezeigt Fehler Validierung

[HttpPost] 
     public ActionResult CreateModal(MyModel myModel) 
     { 
      if (ModelState.IsValid) 
      { 
       //success logic 
      } 
      return PartialView("_MyPartial", myModel); 

     } 

Und mein Teil (es ist in einem jQuery-Dialog):

@using (Ajax.BeginForm("CreateModal", "MyController", new {area = "MyArea2"}, new AjaxOptions() {HttpMethod = "POST", InsertionMode = InsertionMode.Replace})) 
    { 
     @Html.AntiForgeryToken() 
     @Html.ValidationSummary(true, "", new {@class = "text-danger"}) 
     <div class="row"> 
      <fieldset> 
       <legend>Info</legend> 
       <div class="row"> 
        <div class="form-group col-md-4"> 
         @Html.LabelFor(model => model.Name, htmlAttributes: new {@class = "control-label"}) 
         @Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control"}}) 
         @Html.ValidationMessageFor(model => model.Name, "", new {@class = "text-danger"}) 
        </div> 
       </div> 
       </fieldset> 
       </div> 
       } 

ich meine Aktion veröffentlichen kann ganz gut , aber wenn meine ModelState nicht gültig ist, bekomme ich keine Validierungsfehler auf return PartialView("_MyPartial", myModel), obwohl ich durch den Debugger die Fehler sehe.

Ich benutze die neuesten Versionen von Jquery und verwandte Technologie von nuget.

Auch nicht sicher, ob es darauf ankommt, aber ich posten von MyArea1 zu einem Controller in MyArea2. Die _MyPartial lebt in einem gemeinsamen Ordner.

+1

Sie haben kein 'UpdateTargetId' im' AjaxOptions' angegeben (und warum implementieren Sie nicht unaufdringlich Clientseite Validierung der Form zu verhindern, wenn seine ungültig einreichen?) –

+0

Ich war unter den Impressionen Ich brauche UpdateTargetId nicht, wenn ich die gesamte Teilansicht zurückgebe. – RJP

+0

@StephenMuecke Wie implementiert man eine unauffällige clientseitige Validierung? – Alex

Antwort

0
AjaxOptions(){ 
    ... 
    OnComplete = "ParsUnob" 
    ... 
} 

Script-Code:

function ParsUnob() { 
    $.validator.unobtrusive.parse("form"); 
}