次のcshtmlフォームがあります
@using (Html.BeginForm(Html.BeginForm("Create", "UserRole", Model, FormMethod.Post)))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Role</legend>
<div class="editor-label">
@Html.Label(Model.User.UserName)
</div>
<div class="editor-field">
@Html.CheckBoxList(Model.CheckboxList)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
そして、アクションで Model.CheckboxList の選択された項目を取得したいと考えています。
コントローラーに次の作成アクションがあります
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(UserRoleViewModel userRoleViewModel)
{
if (ModelState.IsValid)
{
//_context.Role.Add(role);
//_context.SaveChanges();
//return RedirectToAction("Index");
}
return View(viewModel);
}
ただし、viewModel.CheckboxList は 0 です。
チェックボックスリストの選択された値と Model.User をコントローラーアクションに渡すにはどうすればよいですか?
私のViewModelは次のようになります:-
public User User { get; set; }
public IEnumerable<Role> RoleList { get; set; }
public List<UserRoleViewModel> UserList { get; set; }
public IEnumerable<SelectListItem> CheckboxList { get; set; }
public UserRoleViewModel()
{
}
public UserRoleViewModel(User user, IEnumerable<Role> roleList )
{
User = user;
RoleList = roleList;
}
あなたの助けと時間をありがとう!
更新 ----------- この投稿を読んだ後、ここにリンクの説明を入力して、例に従うようにコードを調整しようとしましたが、この更新されたコードにはまだ問題があります。
今、私は次のものを持っています:-
cshtml :-
@model IEnumerable<MvcMembership.ViewModels.RoleCheckboxListViewModel>
@using (Html.BeginForm())
{
@Html.EditorForModel()
<input type="submit" value="OK" />
}
ビュー/ロール/EditorTemplates/RoleCheckboxListViewModel.cshtml
@model MvcMembership.ViewModels.RoleCheckboxListViewModel
@Html.HiddenFor(x => x.RoleId)
@Html.HiddenFor(x => x.RoleName)
<div>
@Html.CheckBoxFor(x => x.Checked)
@Html.LabelFor(x => x.Checked, Model.RoleName)
</div>
ビューモデル:-
public class RoleCheckboxListViewModel
{
public string RoleId { get; set; }
public string RoleName { get; set; }
public bool Checked { get; set; }
}
コントローラのアクションは次のとおりです:-
public ActionResult Create(int? uid)
{
var checkBoxList = new[]
{
new RoleCheckboxListViewModel() {
RoleId = "1", Checked = true, RoleName = "item 1" },
new RoleCheckboxListViewModel() {
RoleId = "2", Checked = true, RoleName = "item 2" },
new RoleCheckboxListViewModel() {
RoleId = "3", Checked = true, RoleName = "item 3" },
};
return View(checkBoxList);
}
私が今抱えている問題は、Create.cshtml の問題です。チェックボックスリストが表示されず、123 個と [OK] ボタンのみが表示されます。
私は現在行き止まりにいるので、どんな助けでも大歓迎です。