私は ASP.NET MVC を使用して Web アプリケーションを作成していますが、最善の解決策がわからない状況に遭遇しました。
ユーザーとそのロールのリストをテーブルにロードするだけのユーザーページがあります。役割はチェックボックスです。たとえば、マネージャーと管理者は、ユーザーのその行のチェックボックスとして表現される 2 つの別個の役割です。
右端の列には、[保存]、[パスワードの変更]、[削除] の 3 つのボタンがある [アクション] フィールドがあります。
パスワードの変更は、ダイアログ ボックスを開き、ChangePassword というコントローラーのアクションを実行することで機能します。これは、フォームが別の領域にあり、JavaScript を使用して非表示フィールドにいくつかの値が設定されているため、Post 要求です。
削除は、Get リクエストである Delete というアクションを呼び出すことによって機能します。ビューでは、モデルの値を使用してアクション パラメータが明示的に設定されます。これらの値は変更されないため、次のようなことを安全に実行できます。
@Url.Action("Delete", new { loginName = Model.Users[i].LoginName, username = Model.Users[i].Username })
ただし、保存アクションはユーザーの役割を更新するために使用されることを意図しているため、保存アクションは異なります。ユーザーは別のチェックボックスを選択することで変更できます。私の最初の計画は、Save アクションを Get リクエストにして、Delete でこれを行うのと同じように値を渡すことでしたが、どのフィールドが更新されたかがわかるように、JavaScript を使用してある種の非表示フィールドを設定する必要がありました。
別の解決策は、すべてのテーブル行をフォームにして、[投稿を保存] アクションを作成し、チェックボックスの値をアクションのモデルにバインドすることです。ユーザーの数によっては、ページに 50 以上のフォームが存在する可能性があるため、これが推奨されるかどうかはわかりません。
この問題についてアドバイスをいただければ幸いです。
ありがとう