現在、いくつかのユーザー プロファイルの詳細と、ユーザーが割り当てられている役割のリストで構成される編集ビューを作成しようとしています。すべてのユーザー プロファイル テキストボックスを含む編集可能な親ビューを作成し、すべてのロールのチェックボックスを保持する部分ビューを挿入できると考えました。
ただし、部分ビューでテキスト ボックスを更新しようとすると、それらの変更が親モデルに反映されないことがわかりました。どうやら、部分ビューは、親から分離された独自の ViewData ディクショナリを取得します。
部分的なビューでチェックボックスに加えられた変更を親のモデルに戻すことができるソリューションを誰かが持っているかどうか疑問に思っていました。以下にいくつかのサンプルコードを含めました。親ビューは次のとおりです。
@model MvcWebsite.ViewModels.UserProfileEditViewModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>UserProfile</legend>
@Html.HiddenFor(model => model.UserId)
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
... other properties of the user profile omitted for brevity
<div class="editor-field">
@Html.Partial("RoleCheckBoxEditTable", Model.Roles)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
次に、子の部分ビューがあります。
@model List<MvcWebsite.ViewModels.RoleViewModel>
<table>
<tr>
@{
int count = 0;
foreach (var roleViewModel in Model)
{
if(count++ % 3 == 0)
{
@: </tr> <tr>
}
<td>
@Html.HiddenFor(r => roleViewModel.RoleName)
@Html.HiddenFor(r => roleViewModel.RoleId)
@Html.CheckBoxFor(r => roleViewModel.Assigned)
</td>
<td>
@Html.LabelFor(r => roleViewModel.Assigned, roleViewModel.RoleName)
</td>
}
}
</tr>
</table>
私が望むのは、これらのビューの両方で同じモデルを更新し、コントローラーに送信できるようにする方法を見つけることです。どんな助けでも大歓迎です。