2012-03-26 71 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) },