gpt4 book ai didi

c# - MVC 应用程序中缺少表单验证

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:20 24 4
gpt4 key购买 nike

我有一个只包含复选框的表单,我知道我可以让每个复选框都成为强制执行验证错误的必需项。但是我正在寻找的是,如果没有选中任何框,则会出现错误。我将如何实现这一目标?

我正在寻找一条错误消息,例如:“您必须至少选择一个属性。”

我应该澄清一下,没有一个字段是单独需要的,应该至少有一个选择的选项。


编辑澄清:

我的 View 看起来像这样:

@using (Html.BeginForm("Method", "Controller", FormMethod.Post, new {id = "id"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })

<div class="form-group">
@Html.LabelFor(model => model.Property1, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-8">
@Html.CheckBoxFor(model => model.Property1)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Property2, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-8">
@Html.CheckBoxFor(model => model.Property2)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Property3, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-8">
@Html.CheckBoxFor(model => model.Property3)
</div>
</div>
}

我的 View 模型看起来像这样:

public class FormVM 
{
[Display(Name = "One")]
public bool Property1 {get;set;}
[Display(Name = "Two")]
public bool Property2 {get;set;}
[Display(Name = "Three")]
public bool Property3 {get;set;}
}

最佳答案

您可以在 View 模型上实现 IValidatableObject 接口(interface):

public class FormVM : IValidatableObject
{
[Display(Name = "One")]
public bool Property1 {get;set;}

[Display(Name = "Two")]
public bool Property2 {get;set;}

[Display(Name = "Three")]
public bool Property3 {get;set;}

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();

if (!(Property1 || Property2 || Property3))
{
results.Add(new ValidationResult("You must select at least one property."));
}

return results;
}
}

使用它的好处是,如果您在 Controller 中调用 ModelState.IsValid,它会自动触发,并将错误消息添加到 ModelState 错误中。

关于c# - MVC 应用程序中缺少表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37430758/

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