我正在 MVC3 中开发一个应用程序,该应用程序在很多页面上都有下拉列表,用于填充特定对象的选择。我的问题是,在 ViewModel 中包含下拉列表的集合或调用服务来填充下拉列表是否更有意义。
例如,这样是否更有意义:
public class MyViewModel
{
public int SelectedFooId { get; set; }
public IEnumerable<Foo> Foos { get; set; }
}
@Html.DropDownListFor(model => model.SelectedFooId, new SelectList(Model.Foos, "Id", "Name", "-- Select Foo --"))
或者是否有更好的方法来实现这一点,通过从 View 模型中删除 Foos
集合并通过 json 或其他方式使用 ajax 填充它?如果我调用一项服务,您能提供一个如何完成此操作的示例吗?我对 MVC 还比较陌生,并且正在尝试通过最佳实践来完成所有事情,因为我不想养成任何坏习惯。
最佳答案
这是在 ASP.NET MVC 应用程序中呈现下拉列表的一种非常好的方法。您定义一个包含 2 个属性的 View 模型:一个用于绑定(bind)所选值的标量属性和一个用于绑定(bind)选项的集合。然后,您让 Controller 操作填充此 View 模型并传递到 View ,并在 View 内使用 DropDownListFor
帮助器。
在进行某些动态绑定(bind)时,使用 AJAX 填充下拉列表的值可能很有用。例如,您可以使用级联下拉列表来执行此操作,其中第一个 ddl 上的选择将影响第二个 ddl 的值。这是 example如何实现这一点。
关于c# - ViewModel 中的 MVC3 集合或从 Ajax 服务填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7486716/