作为c#/ asp.net / mvc的初学者,我找不到如何从View中的Html.DropDownList获取对象。 这是我的ViewModel:
public class MyViewModel {
public List<Something> ListOfSomething {get;set;} // A list of Somethings
public Something TheSomethingToGet {get;set;} // The object I want to get
}
“Something”对象例如:
public class Something {
public int Id {get;set;}
public string Name {get;set;}
public int AnotherProperty {get;set;}
}
我填充了我的列表&lt;&gt;在控制器中:
public ActionResult Index () {
MyViewModel mvm=new MyViewModel();
mvm.ListOfSomething=(my code to populate the List);
return View(vm);
}
视图在这里:
@model Project.ViewModels.MyViewModel
@Html.LabelFor(m => m.ListOfSomething)
@Html.DropDownListFor(m => m.ListOfSomething, new SelectList(Model.ListOfSomething, "id", "name"), "-")<br/>
最终,控制器的[HttpPost]索引:
[HttpPost]
public ActionResult Index(MyViewModel mvm) {
/* Here, how could I get the "Something" object that
was selected in the dropdownlist and can be identified
by the "id" property ?
*/
}
我完全错了? 感谢
答案 0 :(得分:0)
根据我的理解,DropDownListFor
适用于基本类型,例如int
,string
,您需要做的是在ViewModel中发布SelectedId
属性并发布然后,在使用该Id的控制器中,您将必须从控制器中的视图模型中的集合中提取所选项目。
您可以尝试:
public class MyViewModel {
public List<Something> ListOfSomething {get;set;} // A list of Somethings
public int SelectedItem {get;set;}
}
现在在您看来,您必须这样做:
@Html.DropDownListFor(m => m.SelectedItem, new SelectList(Model.ListOfSomething, "id", "name"), "-")
然后在你的行动方法中:
[HttpPost]
public ActionResult Index(MyViewModel mvm) {
// use mvm.SelectedItem id to get the selected complete object from repository
}
希望它会有所帮助。
答案 1 :(得分:0)
好的,我现在明白控制器无法实例化Something对象,我的工作是使用id来查找和使用List的相应记录或项目。感谢