ViewModel が (コレクションを持っている) 場合、ViewModel プロパティを対応する ModelState.Key 値に一致させることは可能ですか?
例: ビューモデル アイテムのコレクションを編集するために、ここにある拡張機能を使用しています。
これにより、ページ上のフィールドの ID に GUID が追加されます。
例:
class Pets
{
string animal;
string name;
}
ペットのリストの場合、生成された html ソースは次のようになります。
<input name="Pets.index" autocomplete="off" value="3905b306-a9..." type="hidden">
<input value="CAT" id="Pets_3905b306-a9...__animal" name="Pets[3905b306-a9...].animal" type="hidden">
<input value="MR. PEPPERS" id="Pets_3905b306-a9...__name" name="Pets[3905b306-a9...].name" type="hidden">
<input name="Pets.index" autocomplete="off" value="23342306-b4..." type="hidden">
<input value="DOG" id="Pets_23342306-b4...__animal" name="Pets[23342306-b4...].animal" type="hidden">
<input value="BRUTICUS" id="Pets_23342306-b4...__name" name="Pets[23342306-b4...].name" type="hidden">
したがって、これがポストにバインドされると、ModelState にすべてのフォーム フィールドがロードされます。ModelSTate.Keys には、次のものがあります。
Pets[23342306-b4...].name
Pets[23342306-b4...].animal
Pets[3905b306-a9...].name
Pets[3905b306-a9...].animal
これまでのところすべて順調ですが、同じ名前の動物が存在する場合、新しい動物を追加できないなど、いくつかのビジネス ロジックの検証を行っています。その場合、エラーになっている入力フィールドを強調表示できるようにしたいと考えています。
したがって、作成関数が失敗した場合、次のようなエラー/キー値のペアが返されます。
{ error = "Duplicate Name", key="name" }
したがって、少なくともどのプロパティが問題を引き起こしたのかを説明します。
しかし、リポジトリ関数はビュー フィールド ID を認識していないため、キー「name」を適切な ModelState キー (この場合は Pets[23342306-b4...].name または Pets[3905b306) に一致させるにはどうすればよいですか? -a9...].name)?