相关疑难解决方法(0)

如何使用DataAnnotations处理ASP.NET MVC 2中的布尔值/ CheckBox?

我有一个这样的视图模型:

public class SignUpViewModel
{
    [Required(ErrorMessage = "Bitte lesen und akzeptieren Sie die AGB.")]
    [DisplayName("Ich habe die AGB gelesen und akzeptiere diese.")]
    public bool AgreesWithTerms { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图标记代码:

<%= Html.CheckBoxFor(m => m.AgreesWithTerms) %>
<%= Html.LabelFor(m => m.AgreesWithTerms)%>
Run Code Online (Sandbox Code Playgroud)

结果:

没有执行验证.到目前为止,这没关系,因为bool是一个值类型,永远不会为null.但即使我使AgreesWithTerms可以为空,它也无法工作,因为编译器大喊大叫

"模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式."

那么,处理这个问题的正确方法是什么?

validation checkbox asp.net-mvc data-annotations

47
推荐指数
6
解决办法
4万
查看次数

MVC3:通过jQuery验证需要复选框吗?

我想在MVC3项目中使用jQuery validate强制我的"同意条款"复选框.我目前从"MS数据注释属性"+"MS MVC3不引人注目的jQuery验证"获得服务器/客户端DRY/SPOT验证.

这是一个独立的测试(由MVC3生成的纯HTML).为什么它不起作用,拜托?运行时,验证确保填写"联系人姓名"字段,但不关心复选框的状态.

<!DOCTYPE html>

<html>
<head>
    <title>RequiredCheckbox</title>

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript" src="//ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.js"></script>
    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js"></script>
    <script type="text/javascript" language="javascript">
        $(function () {
            // http://itmeze.com/2010/12/checkbox-has-to-be-checked-with-unobtrusive-jquery-validation-and-asp-net-mvc-3/
            $.validator.unobtrusive.adapters.add("mandatory", function (options) {
                    options.rules["required"] = true;
                    if (options.message) {
                        options.messages["required"] = options.message;
                    }
                }
            });
            $.validator.unobtrusive.parse(document);
        });
    </script>

</head>

<body>
    <div>
        <form>
            <input data-val="true" data-val-mandatory="The field Terms Are Accepted is invalid." id="isTermsAccepted" name="isTermsAccepted" type="checkbox" value="true" />
            <input name="isTermsAccepted" type="hidden" value="false" />
            <span class="field-validation-valid" data-valmsg-for="isTermsAccepted" data-valmsg-replace="true"></span>

            <input data-val="true" data-val-required="The Contact Name field is required." …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery jquery-validate

44
推荐指数
2
解决办法
3万
查看次数

MVC将方法添加到jquery.validate.unobtrusive.js中

我最近有一个关于在MVC项目中在客户端进行复选框验证的问题.这个问题已成功回答,但提出了另一个问题.

为了使我的复选框验证工作,我需要将以下javascript直接添加到jquery.validate.unobtrusive.js中:

$jQval.addMethod("mustbetrue", function (value, element, param) {
    // check if dependency is met
    if (!this.depend(param, element))
        return "dependency-mismatch";
    return element.checked;
});

adapters.add("mustbetrue", function (options) {
    setValidationValues(options, "mustbetrue", true);
});
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我不满意不得不改变这个文件,以防微软或验证插件男孩将来更新文件.如果我还没有在项目上工作,那么这个文件可能会被覆盖而没有人意识到它已被定制.

所以考虑到这一点,我尝试将其添加到外部javascript文件中:

$.validator.addMethod("mustbetrue", function (value, element, param) {
    // check if dependency is met
    if (!this.depend(param, element))
        return "dependency-mismatch";
    return element.checked;
});

$.validator.unobtrusive.adapters.add("mustbetrue", function (options) {
    setValidationValues(options, "mustbetrue", true);
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,现在我的复选框上的客户端脚本无法运行.谁能看到我做错了什么?

提前致谢

小号

unobtrusive-validation asp.net-mvc-3

12
推荐指数
1
解决办法
2万
查看次数