EditorForModel MVC4中的验证

时间:2013-07-18 05:33:29

标签: asp.net-mvc-4 razor

我有一个动态视图,它从控制器呈现为PartialView:

@model dynamic
@using (Html.BeginForm("Edit", null,  FormMethod.Post))
 {
    @Html.ValidationSummary(true)

    @Html.EditorForModel()

 <input type="submit" value="Edit" />
}

当我点击提交按钮时,如果缺少任何内容或任何格式不正确等,它应显示验证消息等。

但是,在点击提交按钮时,会在显示消息之前调用帖子编辑操作。正在发生asp.net术语中的典型回发。 在执行服务器控制器代码之前,它不应该在客户端显示错误吗?

我有点困惑,有人可以澄清它是正确的方式还是我做错了什么?

1 个答案:

答案 0 :(得分:-2)

查看

 @using (Html.BeginForm("Index", "Content", FormMethod.Post, new { id = "FrmIndex" }))
        { 

            <div>
                @if (Model.ID != 0)
                {
                    <label style="float: left;">
                        Id</label>
                    <input id="txtID-@Model.ID.ToString()" type="text" class="hide" value="@Model.ID.ToString()"/>
                }

            </div>
            <div>
                              @if (Model.Name != null)
                {
                    <label style="float: left;">
                        Name</label>
                    <input id="txtName-@Model.ID.ToString()" type="text" class="hide" value="@Model.Name.ToString()"/>
                }
                else
                {
                    <label style="float: left;">
                        Name</label>
                    @Html.TextBox("Name")
                    @Html.ValidationMessage("Name")
                }
            </div>
 <input type="submit" value="Save" style="float: left;" id="btnSave" title="btn" />
}

使用此脚本进行验证

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

<强>脚本

 <script type="text/javascript">
        $(document).ready(function () {

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

                var validation = $("#FrmIndex"); // My From Id
                if (!validation.valid()) {
                    return false;
                }

            });
        });
    </script>