問題
ユーザーが編集できるフィールドのリストがあります。モデルが提出されたら、このアイテムが有効かどうかを確認したい. 各フィールドには実行時までわからない異なる検証プロセスがあるため、データ表記を使用できません。検証が失敗した場合はModelState.AddModelError(string key, string error)
、エラー メッセージを追加する 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);
}
}