Mvc3验证未触发

时间:2012-03-26 09:10:00

标签: asp.net-mvc-3

我正在使用Javascript序列化程序将模型数据传递给控制器​​,但这并没有触发代码验证 这是代码

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

但这并没有被解雇。

2 个答案:

答案 0 :(得分:0)

通过ajax将对象传递给控制器​​将禁用默认的mvc验证表单。此验证仅在您执行普通帖子时才有效。 无论如何,如果你想使用ajax,你需要使用jquery进行验证。如果您决定不使用ajax,那么您可以使用mvc的内置验证。我还推荐用于MVC的流畅验证库

答案 1 :(得分:0)

将jQuery ajax的数据参数更改为

data: { DeptName: name },

因此它仅包含模型的属性。其他部门属性应该遵循DeptName ex。 { DeptName: name, DeptAddress: address, ... }

如果您的mvc模型在客户端镜像为javascript模型department,那么您只需:

data: { JSON.stringify(department) },
相关问题