2022年6月13日月曜日

ASP .NET Core(.NET6) RazorPagesでのFORMの値をクラス型でPostする

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 件のコメント:

コメントを投稿