【问题标题】:MVC 3 partial view validation problemMVC 3 部分视图验证问题
【发布时间】:2011-11-22 16:26:13
【问题描述】:

我正在尝试使用DataAnnotations 在部分视图中验证表单。

问题是当我在javascript中检查表单是否有效时,它总是返回true,即使表单不符合要求。

这是始终返回 true 的行:var valid = $("#create-language-form").valid();

在我的模型中,我得到了这个:

    [Required(ErrorMessage="Please enter a name")]
    public string Name { get; set; }

在我的观点中,我得到了这个:

@using(Html.BeginForm(null, null, FormMethod.Post, new { id = "create-language-form" }))
{
<div class="editor-label">
    @Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Name)
    @Html.ValidationMessageFor(model => model.Name)
</div>
}

在我的 javascript 中,我得到了这个:

$("#create-language-dialog").dialog({
        modal: true,
        open: function (event, ui) {
            $('#create-language-dialog').load("/Languages/CreatePartial", { id: objectid });
        },
        buttons: {
            "Save": function () {
                var valid = $("#create-language-form").valid();

                if (valid) {
                 //do stuff
                }
            }
        }
    });

可能出了什么问题?为了让 MVC 验证在局部视图中工作,我错过了什么?

【问题讨论】:

  • 您的布局中是否包含jquery.validate.unobtrusive.js

标签: jquery model-view-controller asp.net-mvc-3 validation asp.net-mvc-validation


【解决方案1】:

我有类似的问题,我写了自己的函数如下

function isFormValid() {
    var valid = true;

    $(".field-validation-error").each(function () {
        if ($(this).attr("data-valmsg-for") == "Name") {
            valid = false;
        }
    });

    return valid;
}

这将检查与ValidationMessageFor 对应的元素是否存在错误。我的页面有多个表单,我希望它只适用于表单上的几个字段,所以我在data-valmsg-for 上添加了 if 条件。如果您有一个表格并想检查是否有任何字段有误,那么您可以如下所示

function isFormValid() {
    var valid = true;

    $(".field-validation-error").each(function () {
        valid = false;
    });

    return valid;
}

【讨论】:

  • 虽然这会起作用,但它并不能真正回答为什么不显眼的验证不起作用的问题。
【解决方案2】:

这将验证表单并返回真或假。

var valid = $("#create-language-form").validate().form();

【讨论】:

  • var valid 即使模型无效,仍然返回 true。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
相关资源
最近更新 更多