私はすべてのロールと実際にはchosedユーザーのロールを取得できますが、次にEditUserアクションにポストするとDropdownlistはnullを送ります。 私はフォームが私のコントローラに投稿されるとき、DropDownListからnullを取得します。ここで ASP.NET MVCでコントローラにポストした後にDropdownlistの値がnullになる
は、ここに私のモデルpublic class EditUserViewModel
{
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public List<SelectListItem> ApplicationRoles { get; set; }
public string ApplicationRoleId { get; set; }
}
あるアクション
[HttpGet]
public async Task<ActionResult> EditUser(string id)
{
EditUserViewModel model = new EditUserViewModel();
model.ApplicationRoles = RoleManager.Roles.Select(r => new SelectListItem
{
Text = r.Name,
Value = r.Id
}).ToList();
if (!String.IsNullOrEmpty(id))
{
ApplicationUser user = await UserManager.FindByIdAsync(id);
if (user != null)
{
var role = await UserManager.GetRolesAsync(user.Id);
var existingRole = role.First();
string existingRoleId = RoleManager.Roles.Single(r => r.Name == existingRole).Id;
model.Id = user.Id;
model.FirstName = user.FirstName;
model.ApplicationRoleId = existingRoleId;
ViewBag.RoleId = new SelectList(RoleManager.Roles, "Id", "Name", model.ApplicationRoleId);
}
}
return PartialView("_EditUser", model);
}
されており、ここでの唯一のDropDownListから、ではない@htmlからヌル取得_EditUser.cshtml
から<div class="form-group">
@Html.Label("Role typ", htmlAttributes: new { @class = "control-label col-md-6" })
<div class="col-md-12" title="Ange antal datorer som finns i lager">
@Html.DropDownList("RoleId", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ApplicationRoles, "", new { @class = "text-danger" })
</div>
</div>
のDropDownListです.EditorFor /ありがとうございます!
あなたはモデルを表示し、POSTメソッド(の署名は、あなたのモデルが実際にという名前のプロパティが含まれていない(と、とにかくビューモデルを持っている場合は、
ViewBag
を必要とすることはありません)ApplicationRoles
プロパティ にSelectListのを割り当てました'RoleId'? - あなたのgetメソッドのコードに基づいて、あなたのビューコードは' @Html.DropDownListFor(m => m.ApplicationRoleId、Model.ApplicationRoles) ' –@StephenMueckeありがとうございます。 –
を受け入れることを知っています、 それ@StephenMueckeが応答したのは です –