0

我正在做MVCBootstrap AppMVC Bootstrap部分視圖ValidationMessageFor在加載時執行頁面

我打開BootstrapPartial View from Jquery通過Model作爲參數。

Controller我返回Partial View,我從Jquery打開它。

我發現的問題是,ValidationMessageFor被執行wh en Partial View被加載......我無法找到原因。

的過程是這樣的......我有叫JavaScript函數的圖像...

IMG ID = 「btnEmail」 SRC = 「〜/內容/圖片/ Email.png」 的onclick = 「btnEmail( '參數1',參數2)」

這是我的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" }); 
 
     }

這裏是我的

Controller Method 

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

,這裏是我的局部視圖

如果我打電話給我的局部視圖這樣

<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>

它工作正常...

這裏是我的局部視圖

@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 --> 
 
}

任何想法是錯誤的一部分?

+0

什麼叫javascript函數'SendMail()'? – zgood

+0

zgood ... SendMail從另一個JavaScript中調用。驗證...第一個javascrpit函數從圖像點擊被調用...我將更新帖子。坦克 – Diego

回答

1

由於您將錯誤的模型傳遞給動作Email(ContactModel model),您會在加載時發生錯誤。 當您使用ajax後,Model binder會驗證模型並將錯誤添加到模型狀態。

爲了解決這個問題,如下操作:

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

讓我知道,如果它幫助。