问题
我有一个用户可以编辑的字段列表。提交模型后,我想检查此项目是否有效。我不能使用数据符号,因为每个字段都有不同的验证过程,直到运行时我才会知道。如果验证失败,我使用ModelState.AddModelError(string key, string error)
where 键是要添加错误消息的 html 元素的名称。由于存在字段列表,因此 Razor 为 html 项目生成的名称类似于Fields[0].DisplayName
. 我的问题是有一种方法或方法可以从视图模型中获取生成的 html 名称的键吗?
尝试的解决方案
我尝试了toString()
钥匙的方法,但没有运气。我也浏览了整个HtmlHelper
课程,但没有看到任何有用的方法。
代码片段
查看模型
public class CreateFieldsModel
{
public TemplateCreateFieldsModel()
{
FreeFields = new List<FieldModel>();
}
[HiddenInput(DisplayValue=false)]
public int ID { get; set; }
public IList<TemplateFieldModel> FreeFields { get; set; }
public class TemplateFieldModel
{
[Display(Name="Dispay Name")]
public string DisplayName { get; set; }
[Required]
[Display(Name="Field")]
public int FieldTypeID { get; set; }
}
}
控制器
public ActionResult CreateFields(CreateFieldsModel model)
{
if (!ModelState.IsValid)
{
//Where do I get the key from the view model?
ModelState.AddModelError(model.FreeFields[0], "Test Error");
return View(model);
}
}