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

MVC自定义验证使用modelstate.addmodelerror

尝试(假设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循环或Complaint.cs 的自定义EditorTemplate生成控件