MVC4:在表单或摘要而不是输入上显示验证错误?

时间:2015-01-29 23:15:05

标签: javascript jquery asp.net-mvc-4

我试图利用某种形式验证来做一些它真正没有设计的事情。我的表格中有一个表格,每行都有一个复选框。我想确保至少选择一种特定类型的复选框,如果不是,我想显示验证错误。我正在做类似的文本框,其逻辑看起来像这样:

function ValidateName() {

var $nameTextbox = $("#Name");
var $originalName = $("#OriginalName");
var nameText = $nameTextbox.val().toLowerCase();
var originalNameText = $originalName.val().toLowerCase();

//check to see if original name and group name match
if (nameText != originalNameText) {
    //This isn't the same name we started with
    if (uniqueNames.indexOf(nameText) > -1) {
        //name isn't unique, throw validation error
        var currentForm = $nameTextbox.closest("form");

        //trigger validation
        var errorArray = {};
        errorArray["Name"] = 'Name must be unique';
        currentForm.validate().showErrors(errorArray);
    }
}

}

我已经为表编写了类似的内容,只要我将errorArray的索引指向输入的id就行了。但是,我希望在表格顶部的验证摘要中显示更通用的错误。如何设置要在表单或验证摘要而不是特定输入上显示的错误数组?这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

你可以做到这一点的一种方法是设置一个隐藏的输入,当没有检查时它是假的,如果检查了一个或多个则为true。然后,您可以通过为所有复选框提供所有类来收听它们。我有一个例子如下所示

http://jsfiddle.net/95acw2m9/

<强> HTML

<input type="hidden" id="IsCheckValue" name="IsCheckedValue" value="false"/>

<input type="checkbox" class="someCheckbox"/>
<input type="checkbox" class="someCheckbox"/>
<input type="checkbox" class="someCheckbox"/>

<强> Jquery的

  $(document).ready(function(){
    $(".someCheckbox").change(function(){
        if($(".someCheckbox:checked ").length > 0){
            $("#IsCheckValue").val("True")
        }else{
            $("#IsCheckValue").val("False")
        }
    })
})

然后在模型中传递bool值。在您的控制器方法中,您可以检查bool的值。如果bool为false,则将模型设置为false,如此

ModelState.AddModelError("Checkbox", "Must select one checkbox");

您可以使用@Html.ValidationSummary()在视图中显示错误。