MVC表单在验证失败后提交

时间:2014-03-05 22:49:01

标签: asp.net-mvc-3 validation

这已经被问过并回答了100次,而且我已经阅读了所有内容,但在验证失败后我的表格仍然提交了。我找到了一个不使用高于1.9.0的jquery.validate的引用,所以我回滚到那个(一直使用1.11),但没有改变。

如果我提交的表格无效(没有填写),则会显示错误消息,然后表单会提交。

我过去已经成功实施了几次验证,但我看不出这次有什么不同。我需要休息一下,不要撞我的头,希望一双新鲜的眼睛可以看到一些东西。

- 脚本:

    <script src="@Url.Content("~/Scripts/jquery-1.9.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.10.1.min.js")" type="text/javascript"></script>

    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    <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>

型号:

    [Display(Name = "First Name *")]
    [StringLength(20)]
    [Required(ErrorMessage = "Required.")]
    public string FirstName { get; set; }

    [Remote("CheckDuplicatePerson", "Validation", AdditionalFields = "FirstName", ErrorMessage="Person Exists")]
    [Display(Name = "Last Name *")]
    [StringLength(30)]
    [Required(ErrorMessage = "Required.")]
    public string LastName { get; set; }

查看:

    <div class="PersonForm">

            @using (Html.BeginForm("AddPerson", "Person", FormMethod.Post))
            { @Html.ValidationSummary(true)
         <div id="editor-left">
                 <div class="formGroup">
                    <div class="editor-label">
                           @Html.LabelFor(model => model.FirstName)  
                    </div>
                    <div class="editor-field">
                        @Html.EditorFor(model => model.FirstName)  <br />
                        @Html.ValidationMessageFor(model => model.FirstName)
                    </div>
                </div>
                <div class="formGroup">
                    <div class="editor-label">
                        @Html.LabelFor(model => model.MiddleName)
                    </div>
                    <div class="editor-field">
                        @Html.EditorFor(model => model.MiddleName)
                    </div>
                </div>
                <div class="formGroup">
                    <div class="editor-label">
                        @Html.LabelFor(model => model.LastName) 
                    </div>
                    <div class="editor-field">
                        @Html.EditorFor(model => model.LastName)  <br />
                        @Html.ValidationMessageFor(model => model.LastName)
                    </div>
                </div>



                 <div class="controls"><hr />
                    <input type="submit" class="skbutton" value="Next Page" />
                </div>
            }                
  </div>

更新:

在这段代码中获取jquery 1.9.1文件中的JS错误:

    parseJSON: function( data ) {
    // Attempt to parse using the native JSON parser first
    if ( window.JSON && window.JSON.parse ) {
        return window.JSON.parse( data );
    }

2 个答案:

答案 0 :(得分:1)

终于搞定了。

@Jerad,我尝试删除远程验证,没有帮助。

原来这是微软不显眼的脚本。我更新了它,它开始工作。所有这些东西似乎都有很好的依赖性。以下是我正在使用的版本:

的jquery-1.9.1

jquery.unobtrusive-ajax - 3.1.1

jquery.validate - 1.11.1

jquery.validate.unobtrusive - 3.1.1

感谢大家的投入。

答案 1 :(得分:0)

我有类似的问题。为每个输入字段设置@ Html.ValidationMessageFor(model =&gt; model.FieldName)以某种方式修复了问题