Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC 4中保存多个ViewModels?_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 如何在ASP.NET MVC 4中保存多个ViewModels?

C# 如何在ASP.NET MVC 4中保存多个ViewModels?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我按照文章的说明做了一个自己的项目。它很好用。我可以用这种方式动态填充依赖的dropdownlists 上面文章“5.4更新索引视图”中的代码统一了ViewModels城市视图模型、StateProvinceViewModel和CountryViewModel。每个ViewModel都包含其自己的dropdownlist的信息 我现在的问题是: 在做出选择后,如何在所有三个下拉列表中保存当前选择?(我想将当前选定的值保存在数据库的DropDownList中)。有人能给我一个提示吗? 我知道如何处

我按照文章的说明做了一个自己的项目。它很好用。我可以用这种方式动态填充依赖的dropdownlists

上面文章“5.4更新索引视图”中的代码统一了ViewModels城市视图模型、StateProvinceViewModel和CountryViewModel。每个ViewModel都包含其自己的dropdownlist的信息

我现在的问题是:
在做出选择后,如何在所有三个下拉列表中保存当前选择?(我想将当前选定的值保存在数据库的DropDownList中)。有人能给我一个提示吗? 我知道如何处理一个ViewModel(可能有三个不同的数据模型),但如果使用多个ViewModel,我不知道从哪里开始

我使用C#和Razor(但我也能阅读VB并将VB翻译成C#)。据我所知,我只能保存一个ViewModel,还是我错了

在做出选择后,如何在所有三个下拉列表中保存当前选择

听起来您可能需要在每次下拉更改事件之后对控制器操作进行Ajax回调?实际上(演示基本原理)

看看这把MVC小提琴

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

<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>
只需确保您有一个操作方法来收集此信息,并确保操作方法的参数名与HTTP Post中的字段名匹配即可。(如果不清楚,Chrome开发者工具的Fiddler或Firebug可以向您展示)


我想我有四个选择:或者我将所有内容放在一个ViewModel中,以将当前视图状态保存到数据库中,但我担心其他/旧问题会再次出现(例如,我无法动态填充相关列表)。或者我试试看。或者我以某种方式通过URL参数传递数据。或者我尝试静态类。我不是静态类的朋友。也许有人有更好的主意?
$(document).ready(function()
            {
                $(".ddl").change(function()
                {
                    $.post('@Url.Action("Save", "Home")', 
                        $(".ddl").serialize(), function(c)
                        {
                            alert(c);
                        });

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