gpt4 book ai didi

c# - 如何从 DropDownlistFor 中的 List 获取对象?

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:17 27 4
gpt4 key购买 nike

作为 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 适用于原始类型,例如 intstring,您需要做的是让 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
}

希望对您有所帮助。

关于c# - 如何从 DropDownlistFor 中的 List<typeObject> 获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com