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

How can I save multiple ViewModels in ASP.NET MVC 4?

我按照文章 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,还是我错了?

How can I save the current selections in all three dropdownlists after the selections were made?

听起来您可能需要 Ajax 在每次下拉更改事件后回调控制器操作?实际上(演示基础知识)

看看这个 MVC Fiddle

https://dotnetfiddle.net/JCwltD

假设我们在一个页面上有一堆下拉列表:

<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>

如何 select 保存值取决于 JQuery select 或(在本例中 css class .ddl

$(document).ready(function()
            {
                $(".ddl").change(function()
                {
                    $.post('@Url.Action("Save", "Home")', 
                        $(".ddl").serialize(), function(c)
                        {
                            alert(c);
                        });

                });
            });

只需确保您有一个操作方法来收集此信息,并确保操作方法的参数名称与 HTTP Post 中的字段名称相匹配。 (Chrome 开发人员工具的 Fiddler 或 Firebug 如果不清楚,可以向您展示这些)

[HttpPost]
public JsonResult Save(string dropDown1, string dropDown2, string dropDown3)
{           
    // do save logic here
    return Json("Saved: " + dropDown1 + " " + dropDown2 + " " + dropDown3);
}