ユーザーロール用のチェックボックスがいくつかある新しいユーザーを追加するフォームがあります。私のアクションには、次のプロパティを持つ User というモデルがあります。
public string Username { get; set; }
public string Password { get; set; }
public IEnumerable<UserRole> Roles { get; set; }
UserRole クラス内には、次の 2 つのプロパティがあります。
public int Id { get; set; }
public string Name { get; set; }
私のフォームでは、入力名「ユーザー名」と「パスワード」を指定することで、ユーザー名とパスワードに問題なくバインドできます。ページが最初に読み込まれると、ユーザー ロールの詳細が読み込まれるため、返す必要があるのは Id だけです。これは、サービスがユーザーをユーザー ロールに関連付けるために必要なものだからです。
各チェックボックスにロール Id の値を指定し、それを Roles に渡して、ロール クラスを部分的に完成させ、ロール オブジェクトの Name フィールドを空白のままにするという簡単な方法でこれを行うことができると思いました。チェックボックスの例は次のようになります。
<input type="checkbox" id="addUserAdministrator" name="Roles.Id" value="@Model.Roles.Where(role => role.Name == "Administrator").Select(role => role.Id).First()" class="css-checkbox"/>
ただし、これによって Roles コレクションが設定されることはなく、常に null です。これを行う方法はありますか、それとも int のリストを渡し、アクションでモデルを作成するという長い方法を実行する必要がありますか?
編集:
私のアクションは次のようになります。
public RedirectToRouteResult Add(User user)