gpt4 book ai didi

asp.net-mvc - 如何使用 DataAnnotations 处理 ASP.NET MVC 2 中的 bool 值/复选框?

转载 作者:行者123 更新时间:2023-12-03 06:11:24 24 4
gpt4 key购买 nike

我有一个像这样的 View 模型:

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; }
}

View 标记代码:

<%= Html.CheckBoxFor(m => m.AgreesWithTerms) %>
<%= Html.LabelFor(m => m.AgreesWithTerms)%>

结果:

不执行任何验证。到目前为止还可以,因为 bool 是一个值类型并且永远不会为 null。但即使我将 AgreesWithTerms 设置为可为空,它也不会起作用,因为编译器会喊

“模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。”

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

最佳答案

我的解决方案如下(与已经提交的答案没有太大区别,但我相信它的命名更好):

/// <summary>
/// Validation attribute that demands that a boolean value must be true.
/// </summary>
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class MustBeTrueAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return value != null && value is bool && (bool)value;
}
}

然后你可以在你的模型中像这样使用它:

[MustBeTrue(ErrorMessage = "You must accept the terms and conditions")]
[DisplayName("Accept terms and conditions")]
public bool AcceptsTerms { get; set; }

关于asp.net-mvc - 如何使用 DataAnnotations 处理 ASP.NET MVC 2 中的 bool 值/复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com