c# - ViewModel 中的 MVC3 集合或从 Ajax 服务填充

标签 c# asp.net asp.net-mvc asp.net-mvc-3

我正在 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/

相关文章:

asp.net - Signalr 在 IIS 7.5 和 Edge/IE 中错误地反序列化我的对象,foreverFrame 损坏了?

asp.net - asp :UpdateProgress - suppressing the line-break

asp.net - 覆盖 ASP.NET WebMethod 参数的 DateTime 序列化

javascript - HighCharts WorlMap 数据标签翻译

asp.net-mvc - 是否可以将 ASP.NET 成员(member)资格提供程序部署到 Azure SQL 数据库以与 Azure 网站 MVC 应用程序一起使用?

javascript - Ajax 发布后页面重新加载

c# - 如何从 base 000001 到 999999 或 LEFT padding 生成序列号?

c# - 大 O 符号和算法

c# - 面板 2 的 splitcontainer splitterdistance

c# - 强制对象以 "dd-mm-yyyy"格式序列化日期