带有DropDownList数据的ASP.NET MVC 4 ViewModel

标签 asp.net asp.net-mvc asp.net-mvc-4 html-select

我正在使用@html.EditorFor在编辑模式下渲染我的模型,并且没有显示下拉列表。

这是我的ViewModel:

     public class RiskAutoViewModel
     {
       public RiskAutoViewModel()
       {
         VehicleMakeList = new SelectList(new List<VehicleMake>() { new VehicleMake() { Id = 1, Name = "Renault" }, new VehicleMake() { Id = 2, Name = "Peugeot" } });
       }


    public int NoClaimsDegree { get; set; }

    public int VehicleValue { get; set; }

    public int EngineCapacity { get; set; }

    public int VehicleMake { get; set; }

    public SelectList VehicleMakeList { get; set; }
  }
VehicleMake呈现为文本框,而VehicleMakeList根本不呈现。我想要的是呈现一个包含VehicleMake列表的下拉列表,并将其值设置为VehicleMake之一。

保存模型后,应将VehicleMake设置为列表中所选项目的值。

我怎样才能做到这一点 ?

编辑

由于无法在下面的注释框中键入任何代码,因此我将在此处进行后续介绍。

我最终创建了一个EditorTemplate,例如:
<div class="editor-label">
    @Html.LabelFor(model => model.VehicleMakeList)
</div>
<div class="editor-field">
    @Html.DropDownListFor(model => model.VehicleMake, Model.VehicleMakeList)
    @Html.ValidationMessageFor(model => model.VehicleMake)
</div>

现在我的ViewModel看起来像这样:
[Required]
[ScaffoldColumn(false)]
public int VehicleMake { get; set; }

[Display(Name = "Marque", Prompt = "Marque", Description = "Renseigne la marque du véhicule")]
public SelectList VehicleMakeList { get; set; }

现在,这引出了另一个问题(也许我应该在另一个线程中),但实际上该 View 中有两个下拉菜单。第二个下拉列表中的项目基本上是动态的,它们取决于第一个下拉列表中选择的项目。使用AJAX很难做到这一点,但是使用MVC,我迷路了。人们通常如何做?

最佳答案

不幸的是,模板编辑器中没有内置的下拉列表支持。您可以编写自己的编辑器模板,也可以在 View 中使用html helper方法@Html.DropDownListFor()

如果您愿意,Darin Dimitrov对this question的回答可以引导您完成为下拉列表构建编辑器模板的过程。

在您看来,最快的方法是执行以下操作:

@Html.EditorFor(model => model.NoClaimsDegree)
@Html.EditorFor( model => model.VehicleValue )
@Html.EditorFor( model => model.EngineCapacity )
@Html.DropDownListFor( model => model.VehicleMake, Model.VehicleMakeList, "Select a make" )

关于带有DropDownList数据的ASP.NET MVC 4 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14654873/

相关文章:

asp.net - IE 错误无效源 HTML5 音频 - 解决方法

jquery - 使用 Ajax Jquery 和 asmx 服务按 Id 获取数据

javascript - 在 ASP.NET 文本框中使用 javascript

javascript - Html.DropDownListFor 和 JavaScript 数组

c# - 如何在 mvc c# 中解密 FormsAuthenticationTicket?

c# - 如何使用 Razor 语法引用应用程序设置

asp.net - VS Web 安装项目替代方案?

asp.net - 在 Visual Studio 2015 中保存 *.cs 或 *.cshtml 文件后 IIS Express 停止

c# - 多用户环境下的asp.net购物车库存管理

jquery - 为什么jstree中的动态节点不响应点击?