Asp.net mvc 为级联子列表构建一个空的MVC DropDownList

Asp.net mvc 为级联子列表构建一个空的MVC DropDownList,asp.net-mvc,view,html.dropdownlistfor,Asp.net Mvc,View,Html.dropdownlistfor,我想构建一个空的Dropdownlistfor,以接收上一个DropDownlisf的选择结果: 实际情况是: <div id="makes"> @Html.DropDownListFor(m => m.Make_Id, Model.MakeList, HeelpResources.DropdownlistMakeFirstRecord) </div> <div id="models"> @Html

我想构建一个空的Dropdownlistfor,以接收上一个DropDownlisf的选择结果:

实际情况是:

    <div id="makes">
        @Html.DropDownListFor(m => m.Make_Id, Model.MakeList, HeelpResources.DropdownlistMakeFirstRecord)
    </div>
    <div id="models">
        @Html.DropDownListFor(m => m.Model_Id, Model.ModelList, HeelpResources.DropdownlistModelFirstRecord)
    </div>        

@DropDownListFor(m=>m.Make_Id,Model.MakeList,HeelpResources.DropdownlistMakeFirstRecord)
@DropDownListFor(m=>m.Model\u Id,Model.ModelList,HeelpResources.DropdownlistModelFirstRecord)
实际控制员(为了工作,我必须建立一个空的SelectedList,但这样做似乎很奇怪):

公共虚拟操作结果创建()
{
//为make构建Dropdownlist
var makesDto=_makeService.ListAllMakes();
var makesViewModel=Mapper.Map(makesDto);
//为模型构建下拉列表
var makeId=-1;
var modelsDto=_modelService.ListModelByMake(makeId);
var modelsViewModel=Mapper.Map(modelsDto);
//生成ViewModel以返回视图
CreateAdViewModel viewModel=新建CreateAdViewModel();
viewModel.MakeList=newselectlist(makesViewModel,“ID”,“Name”);
viewModel.ModelList=新选择列表(modelsViewModel,“ID”,“Name”);
返回视图(viewModel);
}
有没有一种方法可以构建这样的东西: @DropDownListFor(m=>m.Model_Id,null)

并从控制器中删除//构建模型的下拉列表


谢谢

就我个人而言,我会用一点jQuery和一个附加的局部视图来完成这项工作。您的表单可以如下所示:

<div id="makes">
        @Html.DropDownListFor(m => m.Make_Id, Model.MakeList, HeelpResources.DropdownlistMakeFirstRecord)
</div>
<div id="models">

</div>

<script type="text/javascript">
$(function(){
   $("#Make_Id").change(function(){
       $("#models").load("/Controller_Name/GetModels/" + this.val());
   }
});
</script>  

然后只需将下拉列表粘贴到GetModels部分视图中即可找到我认为最好的解决方案,因为构建dropdroplist时不需要服务调用,而且它是强类型的:

@Html.DropDownListFor(m => m.Model_Id, Enumerable.Empty<SelectListItem>(), HeelpResources.DropdownlistModelFirstRecord)
@Html.DropDownListFor(m=>m.Model\u Id,Enumerable.Empty(),HeelpResources.DropdownlistModelFirstRecord)

以下各项正在工作

@Html.DropDownListFor(m => m.Model_Id, **new SelectList(new List<string>()**));
@Html.DropDownListFor(m=>m.Model_Id,**new SelectList(new List()**));

“模型”下拉列表在局部视图之后的视图中得到强类型?它将从下拉列表中向viewmodel内的控制器传递Model_Id selected值?如果您将此标记为您自己问题的答案,这将是一件好事。“HeelpResources.DropdownlistModelFirstRecord”有什么用?它是您要放在第一个选项中的文本,如“请选择一个选项…”,但是基于一个资源字符串,因此您可以在该位置的语言网站(法语/葡萄牙语/英语)中显示此文本
@Html.DropDownListFor(m => m.Model_Id, Enumerable.Empty<SelectListItem>(), HeelpResources.DropdownlistModelFirstRecord)
@Html.DropDownListFor(m => m.Model_Id, **new SelectList(new List<string>()**));