我是asp.net mvc的新手,尽管有几次搜索无法成功地绕过视图中的下拉列表。
具体而言,我正在创建一个首先是实体框架代码的项目。
我有一个表单,要求用户可以选择他们拥有的许可证类型。
非常感谢帮助或帮助。我想在视图中创建一个DropDownListFor帮助器,以启用LicenceType的下拉列表。
与许可证类型相关的GRCMember模型部分是:
public class GRCMember
{
[Column(TypeName = "int")]
public int? LicenceTypeId { get; set; }
}
许可证类型模型是:
public class LicenceType
{
public int LicenceTypeId { get; set; }
[StringLength(150)]
[Column(TypeName = "nvarchar")]
public String Type { get; set; }
[Column(TypeName = "bit")]
public bool? Dormant { get; set; }
public virtual ICollection<GRCMember> GRCMembers { get; set; }
}
相关的“注册视图模型”部分为:
public class RegisterViewModel
{
[Display(Name = "Licence Type")]
public int? SelectedLicenceTypeId { get; set; }
}
get控制器方法是:
[AllowAnonymous]
[HttpGet]
public ActionResult Register()
{
return View();
}
最后,视图的下拉部分是:
@model GRCWebApp.Models.RegisterViewModel
<div class="col-md-3 col-md-offset-1">
@Html.LabelFor(model => model.SelectedLicenceTypeId, htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.SelectedLicenceTypeId, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.SelectedLicenceTypeId, "", new { @class = "text-danger" })
</div>
答案 0 :(得分:1)
假设您有两个名为Person和City的实体。然后,您将使用ViewModel在模型中填充这两个实体,如下所示:
<强> PersonViewModel:强>
public Person Person { get; set; }
public IEnumerable<City> Cities { get; set; }
控制器当然返回ViewModel:
<强>控制器:强>
public ViewResult Create()
{
PersonViewModel model = new PersonViewModel
{
Person = new Person (),
Cities = repository.Cities.ToList()
};
return View(model);
}
您应该将ViewModel传递给View,然后使用Dropdownlist,如下所示:
查看:强>
@model Project.WebUI.Models.PersonViewModel
...
@Html.LabelFor(m => m.Person.City)
@Html.DropDownListFor(m => m.Person.City, new SelectList(Model.Cities, "CityID", "CityName"), "---- Select ----")
希望这会有所帮助......