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