Asp.net mvc 为级联子列表构建一个空的MVC DropDownList
我想构建一个空的Dropdownlistfor,以接收上一个DropDownlisf的选择结果: 实际情况是: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
<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>()**));