これが私の見解です。CheckboxFor() の使用方法:
@using eMCViewModels;
@model eMCViewModels.RolesViewModel
@{
ViewBag.Title = "CreateNew";
}
<h2>
CreateNew<
/h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>RolesViewModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div>
@foreach (RoleAccessViewModel mnu in Model.RoleAccess)
{
// How to use checkboxfor here?
}
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Model.RoleAccess
は でありList<RoleAccessViewModel>
、 を使用してチェックボックスを作成したい@Html.CheckBoxFor()
。
これは私のRoleAccessViewModel
public class RoleAccessViewModel
{
public int RoleID { get; set; }
public string RoleName { get; set; }
public int MenuID { get; set; }
public string MenuDisplayName { get; set; }
public string MenuDiscription { get; set; }
public string IsEnabled { get; set; } // changed to bool
}
リストに 5 つの項目があるとすると、ID=menuID と Text=menuDisplayName の 5 つのチェックボックスが必要です。どうすればこれを達成できますか?
編集
私の試み
@Html.CheckBoxFor(x=>x.RoleAccess.SingleOrDefault(r=>r.MenuID==mnu.MenuID).IsEnabled )
@Html.LabelFor(x=>x.RoleAccess.SingleOrDefault(r=>r.MenuID==mnu.MenuID ).MenuDisplayName )
しかし、タイプをIsEnabled
からstring
に変更した後bool
。チェックボックスが機能します。ただし、 LabelMenuDisplayName
は values の代わりにのみ印刷されます。誰でも助けることができますか?