作为 c#/asp.net/mvc 的初学者,我找不到如何从 View 中的 Html.DropDownList 获取对象。这是我的 View 模型:
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;}
}
我在 Controller 中填充我的列表<>:
public ActionResult Index () {
MyViewModel mvm=new MyViewModel();
mvm.ListOfSomething=(my code to populate the List);
return View(vm);
}
View 在这里:
@model Project.ViewModels.MyViewModel
@Html.LabelFor(m => m.ListOfSomething)
@Html.DropDownListFor(m => m.ListOfSomething, new SelectList(Model.ListOfSomething, "id", "name"), "-")<br/>
最后, Controller 的 [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 ?
*/
}
我完全错了?谢谢
根据我的理解,DropDownListFor
适用于原始类型,例如 int
、string
,您需要做的是让 SelectedId
ViewModel 中的属性并发布该属性,然后在使用该 Id 的 Controller 中,您必须从 Controller 中 View 模型中的集合中提取所选项目。
你可以这样尝试:
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
}
希望对您有所帮助。
我是一名优秀的程序员,十分优秀!