【问题标题】:Mvc3 validatios are not firingMvc3 验证没有触发
【发布时间】:2012-04-09 19:03:45
【问题描述】:

我正在使用 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; }

但这并没有被解雇。

【问题讨论】:

标签: asp.net-mvc-3


【解决方案1】:

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

【讨论】:

  • 谢谢teahupoo 我尝试使用 jquery 进行验证,方法是在我的视图中添加以下代码 $.validator.addMethod("validateEvent", function () { alert("validating"); }) 但这是不工作
【解决方案2】:

将 jQuery ajax 的数据参数更改为

data: { DeptName: name },

所以它只包含模型的属性。其他部门属性应遵循 DeptName ex。 { DeptName: name, DeptAddress: address, ... }.

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

data: { JSON.stringify(department) },

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多