gpt4 book ai didi

c# - 是否可以在 MVC 3 中打开/关闭验证数据注释?

转载 作者:太空狗 更新时间:2023-10-30 01:23:12 26 4
gpt4 key购买 nike

我有两个独立的 View 访问同一个模型。当我将验证器数据注释放在模型上时,它会像宣传的那样工作,如果留空或不在范围内,它会阻止数据被提交(对于两个 View )。但是,我有一个 View 应该能够允许为属性保存空值或空值,而另一个 View 需要在允许信息通过之前输入或选择信息。换句话说,我想为一个 View 关闭 MODEL 中属性的验证器,而为另一个 View 保留它。这是示例代码:

型号:

[Range(1, 999, ErrorMessage = "A submittal is required")]
public int SubmittalId { get; set; }

View #1:

 <label>@Model.AuditDoc.SubmittalsLabel.ConfigurableLabelDesc</label> @Html.ValidationMessageFor(x => x.AuditDoc.SubmittalId) @Html.DropDownListFor(x => x.AuditDoc.SubmittalId, new SelectList(Model.AuditDoc.ListOfSubmittals, "Id", "Name"))

View #2:

 <label>@Model.AuditDoc.SubmittalsLabel.ConfigurableLabelDesc</label> @Html.DropDownListFor(x => x.AuditDoc.SubmittalId, new SelectList(Model.AuditDoc.ListOfSubmittals, "Id", "Name"))

如您所见,我想为 View #2 禁用该验证程序数据注释,并为 View #1 保留它。

最佳答案

这通过默认的数据注释集是不可能的。但是,您可以选择使用 2 个单独的 View 模型或编写自己的 validationAttribute。

我写过一次..虽然我讨厌使用它..

public class RequiredOnAttribute : ValidationAttribute
{
public string[] URLs { get; set; }

public override bool IsValid(object value)
{
if (URLs.Contains(System.Web.HttpContext.Current.Request.Url.AbsolutePath))
{
if (string.IsNullOrEmpty(value as string))
{
return false;
}
}
return true;
}
}

用法:

[RequiredOn(URLs = new string[] { "/create", "/edit" })]
public string MyModelField { get; set; }

您可以对 Range、RegEx 等执行相同的操作。

关于c# - 是否可以在 MVC 3 中打开/关闭验证数据注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11874026/

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