MVC - 可以 "SelectList" return 选定的对象吗?
MVC - Can a "SelectList" return the selected object?
得到对象列表,likaso(伪代码):
class PersonViewModel{name, age, etc}
class MyObjectViewModel
{
//actually comes from WebService, but that doesnt matter here
List<PersonViewModel> AllPeople= {person1,person2, etc}
PersonViewModel SelectedPerson;
}
所以我想允许用户从下拉列表中 select 一个人:
@model MyModels.MyObjectViewModel
@Html.DropDownListFor(MyObjectViewModel=> MyObjectViewModel.SelectedPerson , new SelectList(Model.AllPeople))
视图和下拉菜单已正确填充。
当我点击提交时,控制器总是得到 myObjectViewModel.SelectedPerson == Null。
为什么它 return 什么都没有?我如何 return selected 对象?
Html.DropDownListFor
无法将 PersonViewModel
创建为所选人员。虽然它可以 return 一个 Id
选定的人,但你必须从你的 service/session/database 等中获取所有其他字段。假设 PersonViewModel
有一个 Id
和 Name
属性这是你应该做的:
class MyObjectViewModel
{
//actually comes from WebService, but that doesnt matter here
List<PersonViewModel> AllPeople= {person1,person2, etc}
int SelectedPersonId;
}
@model MyModels.MyObjectViewModel
@Html.DropDownListFor(m=> m.SelectedPersonId,
Model.AllPeople.Select(p=>new SelectListItem{Value = p.Id, Text=p.Name}))
在您发布的操作中,您将 MyObjectViewModel.SelectedPersonId 填充所选人员的 ID。然后您将能够使用它来获得您的 PersonViewModel
得到对象列表,likaso(伪代码):
class PersonViewModel{name, age, etc}
class MyObjectViewModel
{
//actually comes from WebService, but that doesnt matter here
List<PersonViewModel> AllPeople= {person1,person2, etc}
PersonViewModel SelectedPerson;
}
所以我想允许用户从下拉列表中 select 一个人:
@model MyModels.MyObjectViewModel
@Html.DropDownListFor(MyObjectViewModel=> MyObjectViewModel.SelectedPerson , new SelectList(Model.AllPeople))
视图和下拉菜单已正确填充。
当我点击提交时,控制器总是得到 myObjectViewModel.SelectedPerson == Null。 为什么它 return 什么都没有?我如何 return selected 对象?
Html.DropDownListFor
无法将 PersonViewModel
创建为所选人员。虽然它可以 return 一个 Id
选定的人,但你必须从你的 service/session/database 等中获取所有其他字段。假设 PersonViewModel
有一个 Id
和 Name
属性这是你应该做的:
class MyObjectViewModel
{
//actually comes from WebService, but that doesnt matter here
List<PersonViewModel> AllPeople= {person1,person2, etc}
int SelectedPersonId;
}
@model MyModels.MyObjectViewModel
@Html.DropDownListFor(m=> m.SelectedPersonId,
Model.AllPeople.Select(p=>new SelectListItem{Value = p.Id, Text=p.Name}))
在您发布的操作中,您将 MyObjectViewModel.SelectedPersonId 填充所选人员的 ID。然后您将能够使用它来获得您的 PersonViewModel