0

Ich mache eine MVC, Bootstrap App.MVC Bootstrap Teilansicht ValidationMessageFür die Ausführung beim Laden Seite

Ich öffnen ein BootstrapPartial View from Jquery übergibt Model als Parameter.

Von Controller Ich gebe Partial View zurück und ich öffne es von Jquery.

Das Problem, das ich gefunden habe, ist, dass ValidationMessageFor ausgeführt wird wh en Partial View geladen ist ... Ich kann nicht finden, warum.

Der Prozess ist so ... Ich habe ein Bild, das eine JavaScript-Funktion namens ...

img id = "btnEmail" src = "~/content/images/Email.png" Onclick = "btnEmail ('param1', Param2)"

Hier ist mein Jquery

function btnEmail(nick, user_id) { 
 
     --validate if user is logged and call function that call Partial View 
 
     if (SearchLogin()) 
 
      SendMail(); 
 
    } 
 

 
function SendMail() { 
 

 
      user_id = $('#CommentUser_id').val(); 
 
      nick = $('#LblCommentName').val(); 
 
      if (user_id == $('#User_id').val()) 
 
       return; 
 

 
      var model = { Object_id: $("#Upload_id").val(), Nick: nick, UserDestination_id: $("#User_id").val(), Parent_id: null, UserOrigin_id: user_id}; 
 
      $.ajax(
 
         { 
 
          type: "POST", 
 
          url: '@Url.Action("Email", "Contact")', 
 
          data: model, 
 
          success: function (result) { 
 
           $("#myModalContact").html(result).modal({ backdrop: "static" }); 
 
          }, 
 
          
 
         }); 
 
      "static" }); 
 
     }

Hier ist meine

Controller Method 

public async Task<ActionResult> Email(ContactModel model) 
 
     { 
 
      return PartialView("_Contact", model); 
 
     }

Und hier ist meine Teilansicht

Wenn ich meine Teilansicht wie diese

genannt

<div class="modal fade" id="myModalContact" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
 
     @Html.Partial("~/Views/Contact/_Contact.cshtml", new TableAvivaVoz.Models.ContactModel() { Object_id = Model.upload.Upload_id, Nick = Model.upload.Nick, UserDestination_id = Model.upload.User_id, Parent_id = null,UserOrigin_id=Model.User_id }); 
 
    </div>

es funktioniert gut ...

hier ist ein Teil meiner Teilansicht

@model TableAvivaVoz.Models.ContactModel 
 
@{ 
 
    AjaxOptions ajaxOpts = new AjaxOptions 
 
    { 
 
     InsertionMode = InsertionMode.Replace, 
 
     HttpMethod = "POST", 
 
     OnSuccess = "sucessContact", 
 
    }; 
 
} 
 
@using (Ajax.BeginForm("XXX", "Contact", ajaxOpts)) 
 
{ 
 
    <div class="modal-dialog"> 
 
     <div class="modal-content"> 
 
      <div class="modal-header"> 
 
       <h4 class="modal-title" id="myModalLabel"> 
 
        
 
       </h4> 
 
      </div> 
 
      <div class="myPartialContact"> 
 
       <div class="alert alert-success hidden"> 
 
       </div> 
 
      </div> 
 
      @Html.AntiForgeryToken() 
 
      
 
      <div style="padding-bottom:220px"> 
 
       <div class="modal-body"> 
 
        <div class="col-md-10"> 
 
         @Html.TextAreaFor(model => model.Description, 10, 80, new { @class = "txtDescQ", placeholder = "Ingresa un mensaje", @rows = 8, onclick = "OcultarRecomend();" }) 
 
         @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) 
 
        </div> 
 
       </div> 
 
      </div> 
 
       <div class="myPartialContactBtn modal-footer"> 
 
        <button type="button" class="btn btn-default visible btnOk" data-dismiss="modal">Close</button> 
 
        <button type="submit" class="btn btn-primary visible btnOk" id="btnSave">Enviar</button> 
 

 
       </div> 
 

 
      </div><!-- /.modal-content --> 
 
    </div><!-- /.modal --> 
 
}

Irgendwelche Ideen, was falsch ist?

+0

Was nennt man die JavaScript-Funktion 'SendMail()'? – zgood

+0

zgood ... SendMail wird von einem anderen JavaScript aufgerufen, das einige tut. Validierung ... Die erste javascrpit Funktion wird von Image click ... aufgerufen. Ich werde den Post updaten. Tanks – Diego

Antwort

1

Sie erhalten Fehler beim Laden, weil Sie ein fehlerhaftes Modell an die Aktion Email(ContactModel model) übergeben. Wenn Sie eine Postverbindung herstellen, validiert der Modellbinder das Modell und fügt dem Modellstatus Fehler hinzu.

dies wie unten zu beheben tun:

public async Task<ActionResult> Email(ContactModel model) 
{ 
    ModelState.Clear();  
    return PartialView("_Contact", model); 
} 

Lassen Sie mich wissen, ob es hilft.

Verwandte Themen