gpt4 book ai didi

c# - 使用 modelstate.addmodelerror 的 MVC 自定义验证

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:50 25 4
gpt4 key购买 nike

我有一个入站 View 模型列表,其中基本上有四个属性。

public class Complaint
{
public int Id { get; set;}
public string Comments { get; set; }
public int RuleId { get; set; }
public int ResponseId { get; set; }
}

数据传输正常,我可以看到它已绑定(bind)到我的列表 Controller 项。

根据 RuleId 中包含的数据,ResponseId 和 Comments 具有不同的验证要求。我正在寻找使用 ModelState.AddModelError 来实现这一点。过去,当我不得不进行这种形式的验证时,我的 View 上有固定的字段名称。但是这个应用程序,我可以有 6 个组,我可以有 20 个。AddModelError 使用属性名称来关联错误,正如我提到的,我的列表中有可变数量的项目。

有谁知道我如何遍历我的列表并知道我正在检查的项目与我的 View 中的特定表单字段相关?

foreach(var complaint in List<Complaint>)
{
if (complaint.RuleId == 1) && (complaint.Comments == null)
{
ModelState.AddModelError("INDIVIDUAL PROPERTY NAME NEEDED", "error message");
}
}

提前致谢

托尼

最佳答案

尝试(假设 modelList<Complaint> )

for(int i = 0; i < model.Count; i++)
{
if (model[i].RuleId == 1) && (model[i].Comments == null)
{
string propertyName = string.Format("[{0}].Comments", i); // returns "[0].Comments", "[1].Comments" etc
ModelState.AddModelError(propertyName , "error message");
}
}

这假设您正在使用 for 在 View 中生成控件循环或自定义 EditorTemplate对于 Complaint.cs

关于c# - 使用 modelstate.addmodelerror 的 MVC 自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26312824/

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