我按照文章http://www.codeproject.com/Tips/850816/Dynamically-Populate-Dependent-Dropdown-List-in-MV的说明进行了自己的项目。它工作正常。我可以用这种方式动态填充依赖的下拉列表。
" 5.4更新索引视图中的代码"上面的文章统一了ViewModels CityViewModel,StateProvinceViewModel和CountryViewModel。每个ViewModel都包含其自己的下拉列表的信息。
我现在的问题是:
选择完成后,如何在所有三个下拉列表中保存当前选择? (我想将当前选定的值保存在数据库的下拉列表中)。有人可以给我一个提示吗?
我知道如何处理一个ViewModel(可能有三个不同的DataModel),但如果使用多个ViewModel,我不知道从哪里开始。
我使用C#和Razor(但我也能读取VB并将VB转换为C#)。据我所知,我只能保存一个ViewModel,或者我错了吗?
答案 0 :(得分:3)
如何在选择完成后保存所有三个下拉列表中的当前选择?
在每次下拉更改事件后,您可能需要对控制器操作进行Ajax回调?实际上(为了演示基础知识)
看看这个MVC小提琴
https://dotnetfiddle.net/JCwltD
假设我们在页面上有一堆dropDown列表:
<form id="theForm">
@Html.DropDownListFor(m => m.DropDown1, new SelectList(this.Model.DropDown1Items), new { @class="ddl"} )
@Html.DropDownListFor(m => m.DropDown2, new SelectList(this.Model.DropDown2Items), new { @class="ddl"} )
@Html.DropDownListFor(m => m.DropDown3, new SelectList(this.Model.DropDown3Items), new { @class="ddl"} )
</form>
如何选择要保存的值可以依赖于JQuery选择器(在本例中为css类 .ddl
$(document).ready(function()
{
$(".ddl").change(function()
{
$.post('@Url.Action("Save", "Home")',
$(".ddl").serialize(), function(c)
{
alert(c);
});
});
});
确保您有一个操作方法来收集此信息,并确保操作方法的参数名称与HTTP Post中的字段名称相匹配。 (如果不清楚,Fiddler或Firebug of Chrome开发人员工具可以向您展示这些内容)
[HttpPost]
public JsonResult Save(string dropDown1, string dropDown2, string dropDown3)
{
// do save logic here
return Json("Saved: " + dropDown1 + " " + dropDown2 + " " + dropDown3);
}