MVC4 を使用して、ユーザー アカウントを一覧表示するグリッドでユーザーがクリックできる「ロック」/「ロック解除」ボタン/リンクを作成しようとしています。WebForms では、列のグリッド テンプレートに ImageButton を配置し、それをそのボタンの Command イベントに接続してから、そのユーザーに対して表示される「ロック」/「ロック解除」テキストを変更するという比較的単純なタスクです。しかし、MVC4でこれを行う方法を完全に理解できないようです。または、少なくとも ajax/jquery をグリッド内の各ユーザーとうまく連携させるために、かなりの数のフープを飛び越えなければなりません。
現在、システムに登録されているユーザーを一覧表示するグリッドがあり、このグリッドは正しく表示されています。グリッドは単純なビューで表示され、コントローラーは のプロパティを持つモデルを返しますUsers
。このプロパティは、UserInfo
UserName、Name、IsActive などの基本的なユーザーの詳細を含むオブジェクトのリストです。
Html.RenderAction を使用して、タスクを実行する Lock という専用のアクションを呼び出してみましたが、ユーザーの詳細をコントローラーに渡そうとするとエラーが発生し続けました ( ASP.NET MVC 2 では、ルート値を取得するにはどうすればよいですか現在のリンクを強調表示できるように、ナビゲーション コントローラーを使用しますか? - うまくいきませんでした)。
同様に、部分ビューを作成しようとしましたが、エラーが発生し続けました( Html.RenderPartial で奇妙なオーバーロードエラーが発生しましたか?いいえ、私にとってもうまくいきませんでした)。
私は、これらの個々の問題と、今日やりたいことを実行するための代替方法を調査するために SO を探し回っていますが、このタスクを成功させるにはほど遠い.
私が説明したことを行う簡単な方法はありますか?jquery 関数をアタッチするために、ユーザー行ごとに個別に番号付けされた要素タグを書き出す必要がありますか?
UPDATE グリッドを生成するコード。
if (Model != null && Model.Users != null && Model.Users.Count > 0)
{
<table class="table table-striped">
<tr>
<th>
User
</th>
<th>
Name
</th>
<th>
Lock/Unlock
</th>
</tr>
@foreach (UserInfoModel user in Model.Users)
{
<tr>
<td>
@Html.ActionLink(user.UserName, "Edit", new { id = user.PersonID })
</td>
<td>
@Html.DisplayFor(m => user.Name)
</td>
<td>
@*@Html.Action("Lock", new { personID = user.PersonID, isLocked = null as bool?})*@
@*@{ Html.Render("_Lock", new { personID = user.PersonID, isLocked = null as bool? }); }*@
@Html.ActionLink("Lock", "Lock", new { personID = user.PersonID, lockAccount = user.IsActive })
</td>
</tr>
}
</table>
コントローラー コードの試み。
[Authorize(Roles = LMSRoles.Administrators)]
public ActionResult Lock(int personID, bool lockAccount)
{
return Json(null, JsonRequestBehavior.AllowGet);// PartialView("_Lock");
}