2012-03-26 68 views
0

我正在使用Javascript序列化程序將模型數據傳遞給控制器​​,但這不會觸發代碼驗證。
下面是代碼Mvc3有效性未觸發

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/microsoftajax.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script> 
<script type="text/javascript" language="javascript"> 

$(document).ready(function() { 

     $("#btnCreateDepartment").click(function() { 

      var name = $('#txtDeptName').val(); 
      $.ajax({ 
       data: { modelName: 'DEPARTMENT', values: Sys.Serialization.JavaScriptSerializer.serialize(
       { 
        DeptName: name 
       } 
      ) 
       }, 
       url: '@Url.Action("Create", "Office")', 
       type: "POST", 
       complete: function (result) { 
        debugger 
        alert("complete"); 
       }, 
       error: function (result) { 
        debugger 
        alert(result.statusText); 
       } 
      }); //Endof ajax 
      return false; 
     }); //end of click 

    }); // end of ready 
</script> 

在模型中我已經添加了驗證如下

[Required(ErrorMessage = "Please Enter department")] 
     public string DeptName { get; set; } 

但這不是被解僱。

+0

http://stackoverflow.com/questions/5200098/asp-net-mvc-3-ajax -form-submit-and-validation。希望它可以幫助 – 2012-03-26 09:15:23

回答

0

通過ajax將對象傳遞給控制器​​將禁用默認的mvc驗證表單。這個驗證只有在你正常發佈後纔有效。 無論如何,如果你想使用ajax,你需要使用jQuery進行驗證。如果您決定不使用ajax,那麼您可以使用mvc的內置驗證。我還建議流利的驗證庫的MVC

+0

謝謝teahupoo我嘗試使用驗證使用jquery通過添加foll代碼到我的視圖$ .validator.addMethod(「validateEvent」, function(){ alert(「validating」); })但這不是加工 – Rutu 2012-03-29 11:23:26

0

更改數據參數的jQuery的AJAX來

data: { DeptName: name }, 

所以它包含了模型的唯一性。其他部門屬性應該遵循DeptName ex。 { DeptName: name, DeptAddress: address, ... }

如果你的MVC模型,反映在客戶端作爲一個JavaScript模型department你只想去:

data: { JSON.stringify(department) },