Asp.net mvc 模型视图中的下拉列表
在我看来,这是行不通的Asp.net mvc 模型视图中的下拉列表,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,在我看来,这是行不通的 @model PASKAN.Web.Security.Models.User <p class="lan-name"><label>Language</label>@Html.DropDownListFor(o => o.Language, Enum.GetValues(typeof(Enum)).Cast<Enum>().Select(x => new SelectListItem { Text = x.ToS
@model PASKAN.Web.Security.Models.User
<p class="lan-name"><label>Language</label>@Html.DropDownListFor(o => o.Language, Enum.GetValues(typeof(Enum)).Cast<Enum>().Select(x => new SelectListItem { Text = x.ToString(), Value = ((int)x).ToString() }))</p>
我的控制器看起来像这样
public ActionResult Edit()
{
Models.User user = new User(Convert.ToInt32(User.Identity.Name));
ViewBag.Languages = Enum.GetNames(typeof(Language)).ToList();
return View (user);
}
您在ViewBag中填充了这些语言,因此请在视图中使用它们:
@Html.DropDownListFor(o => o.Language, (IEnumerable<SelectListItem>)ViewBag.Languages)
但既然你提到了视图模型,我认为你误用了这个术语。在您的情况下,我看不到视图模型的任何痕迹。视图模型应如下所示:
public class MyViewModel
{
public string Language { get; set; }
public IEnumerable<SelectListItem> Languages { get; set; }
}
在强类型视图中:
@model MyViewModel
...
@Html.DropDownListFor(x => x.Language, Model.Languages)
public class MyViewModel
{
public string Language { get; set; }
public IEnumerable<SelectListItem> Languages { get; set; }
}
public ActionResult Edit()
{
var user = new User(Convert.ToInt32(User.Identity.Name));
var viewModel = new MyViewModel
{
Language = user.Language,
Languages = Enum
.GetNames(typeof(Language))
.Select(x => new SelectListItem { Value = x, Text = x })
.ToList()
};
return View (viewModel);
}
@model MyViewModel
...
@Html.DropDownListFor(x => x.Language, Model.Languages)