我有以下课程:
public class Nationality
{
public int ID { get; set; }
public string name { get; set; }
}
public class PersonalData
{
public List<Nationality> availableNationalities { get; set; }
public PersonalData()
{
availableNationalities = new List<Nationality>();
}
}在我看来,我希望使用DropDownlistFor上的availableNationalities字段创建一个PersonalData。
下面是一段视图代码和一个示例,我试图这样做:
@model PersonalData
@Html.DropDownListFor(
model => model.personalData.nationality,
new SelectList(Model.availableNationalities, "ID", "name"),
"Choose please an option",
new { required = "required" }
)提前谢谢你
发布于 2017-11-12 16:51:46
当您的personalData视图模型上没有PersonalData属性时,您的代码将抛出一个异常。
在视图模型中再添加一个属性来存储所选的选项值
public class PersonalData
{
public int SelectedNationality { set;get;}
public List<Nationality> AvailableNationalities { get; set; }
public PersonalData()
{
AvailableNationalities = new List<Nationality>();
}
}现在,在您的视图中,您可以使用选择标记助手(在您的ASP.NET核心应用程序)
@model PersonalData
<form asp-controller="Home" asp-action="Create">
<select asp-for="SelectedNationality"
asp-items="@(new SelectList(Model.AvailableNationalities ,"Id","Name"))">
<option>Please select one</option>
</select>
<input type="submit"/>
</form>如果它是一个非核心应用程序,您可以使用DropDownListFor助手
@Html.DropDownListFor(
a=> a.SelectedNationality,
new SelectList(Model.AvailableNationalities, "ID", "name"),
"Choose please an option",
new { required = "required" }
)假设GET操作方法在将GET操作方法发送到视图之前在PersonalData视图模型对象上设置它的PersonalData属性。
public IActionResult Create()
{
var vm=new PersonalData
{
AvailableNationalities = new List<Nationality>
{
new Nationality { Id=1, Name="USA"},
new Nationality { Id=2, Name="Canada"},
}
};
return View(vm);
}如果您只关心在视图中呈现一个SELECT元素,您可以使用List<SelectListItem>而不是List<Nationality>,就像this post中所解释的那样。
https://stackoverflow.com/questions/47251301
复制相似问题