MVC自定义验证使用modelstate.addmodelerror
本文关键字:modelstate addmodelerror 自定义 验证 MVC | 更新日期: 2023-09-27 18:26:20
我有一个入站视图模型列表,它基本上在.中有四个属性
public class Complaint
{
public int Id { get; set;}
public string Comments { get; set; }
public int RuleId { get; set; }
public int ResponseId { get; set; }
}
数据处理得很好,我可以看到它绑定到了我的List控制器项。
根据RuleId中包含的数据,使ResponseId和Comments具有不同的验证要求。我希望使用ModelState.AddModelError来实现这一点。在过去,当我不得不进行这种形式的验证时,我在视图中固定了字段名。但是这个应用程序,我可以有6组,我可以20组。AddModelError采用与错误相关联的属性名称,正如我所提到的,我的列表中有可变数量的项。
有人知道我如何循环浏览我的列表,并知道我正在检查的项目与我的视图中的特定表单字段有关吗?
foreach(var complaint in List<Complaint>)
{
if (complaint.RuleId == 1) && (complaint.Comments == null)
{
ModelState.AddModelError("INDIVIDUAL PROPERTY NAME NEEDED", "error message");
}
}
提前感谢
Tony
尝试(假设model
是List<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
循环或Complaint.cs
的自定义EditorTemplate
生成控件