C# 使用modelstate.addmodelerror的MVC自定义验证
我有一个入站视图模型列表,其中基本上有四个属性C# 使用modelstate.addmodelerror的MVC自定义验证,c#,asp.net-mvc,validation,C#,Asp.net Mvc,Validation,我有一个入站视图模型列表,其中基本上有四个属性 public class Complaint { public int Id { get; set;} public string Comments { get; set; } public int RuleId { get; set; } public int ResponseId { get; set; } } 数据顺利通过,我可以看到它被绑定到我的列表控制器项 根据RuleId中包含的数据,Make Resp
public class Complaint
{
public int Id { get; set;}
public string Comments { get; set; }
public int RuleId { get; set; }
public int ResponseId { get; set; }
}
数据顺利通过,我可以看到它被绑定到我的列表控制器项
根据RuleId中包含的数据,Make ResponseId和Comments具有不同的Validation要求。我希望使用ModelState.addmodeleror来实现这一点。在过去,当我不得不进行这种形式的验证时,我在视图上有固定的字段名。但是这个应用程序,我可以有6组,我可以有20组。AddModelError采用将错误与之关联的属性名,正如我提到的,我的列表中有数量可变的项
有人知道我如何循环我的列表并知道我正在检查的项与视图中的特定表单字段相关吗
foreach(var complaint in List<Complaint>)
{
if (complaint.RuleId == 1) && (complaint.Comments == null)
{
ModelState.AddModelError("INDIVIDUAL PROPERTY NAME NEEDED", "error message");
}
}
foreach(列表中的var投诉)
{
if(complaint.RuleId==1)和&(complaint.Comments==null)
{
AddModelError(“需要单独的属性名”,“错误消息”);
}
}
提前谢谢
Tony试试(假设<代码>型号是<代码>列表)
for(int i=0;i
这假设您正在视图中使用
for
循环或自定义编辑器模板for投诉.cs
生成控件。这非常有效。真不敢相信我没试过。我在找一种能装它的东西!
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");
}
}