Я пытаюсь использовать выпадающий список со строгим контролем типов для своего приложения.У меня также есть поля для текстовых полей.Но когда я передаю @model Aayumitra.Models.RegisterViewModel
@using Aayumitra.Models;
, я получаю ошибку ниже.
Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List`1 [System.Web.Mvc.SelectListItem] ', но для этого словаря требуется элемент модели типа' XXX.XXX.XXX '.
AccountViewModel
public class RegisterViewModel
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public IEnumerable<SelectListItem> Genders { get; set; }
}
Контроллер
private static List<SelectListItem> GetGenders()
{
AayumitraDBEntities db = new AayumitraDBEntities();
List<SelectListItem> GenderList = (from p in db.Genders.AsEnumerable()
select new SelectListItem
{
Text = p.GenderType,
Value = p.GenderId.ToString()
}).ToList();
//Add Default Item at First Position.
GenderList.Insert(0, new SelectListItem { Text = "--Select Gender--", Value = "" });
return GenderList;
}
//
// GET: /Account/UpdatePatient
[AllowAnonymous]
public ActionResult UpdatePatient()
{
List<SelectListItem> GenderList = GetGenders();
return View(GenderList);
}
Просмотр
@model Aayumitra.Models.RegisterViewModel
@using Aayumitra.Models;
@using (Html.BeginForm())
{
<div class="row">
<div class="col-md-4">
<div class="profile-container">
<div class="profile">
<img src="~/Content/images/logo.png" width="100" />
</div>
<div class="profile-info">
<p>
@Html.TextBox("FullName", User.Identity.Name.ToString(), new { @readonly = "readonly", @disabled = "disabled" })
</p>
</div>
</div>
</div>
</div>
<div class="dropdown-divider"></div>
<div class="row">
<div class="col-sm-3">
<div class="form-group">
@Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
@Html.LabelFor(model => model.MiddleName, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.MiddleName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.MiddleName, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
@Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
@Html.LabelFor(model => model.Gender, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.DropDownListFor(x => Model.Gender, new SelectList(Model.Genders, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "Gender" })
</div>
</div>
</div>
}