如何在ASP.NET MVC 4中保存多个ViewModel?

时间:2015-03-04 08:13:43

标签: c# asp.net-mvc razor

我按照文章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,或者我错了吗?

1 个答案:

答案 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);
}