Personをクライアント側で動的に増減したいので
asp-forでbindするのではなく、idとnameを指定して
配列を受け取るようにしたい。
<ViewModel>
public class Person
{
public string? Name{get; set;}
public Int32? Age{get;set;}
}
<RazorPages>
public IActionResult OnPostSave(Person[] person)
{
//DataAnotationの実行はここで
var success = true;
foreach(var p in person)
{
success &= TryValidateModel(p);
}
}
<cshtml>
<form id="frm" asp-route-handler="Save">
<input id="person_Name" name="person[0].Name" type=~~ />
<input id="person_Age" name="person[0].Age" type=~~ />
<input id="person_Name" name="person[1].Name" type=~~ />
<input id="person_Age" name="person[1].Age" type=~~ />
</form>
・覚えておくこと
inputタグのname属性を
OnPostSaveの引数パラメーター名 + [0からの要素番号] + .(ドット) + クラスのプロパティ名
とすること。
クライアントの検証は、$('#frm').validate().form()でできる。
0 件のコメント:
コメントを投稿