【发布时间】:2011-03-24 14:35:21
【问题描述】:
我是 Francesco,我是新手。关于视图和控制器之间发布的数据,我对 ASP.NET MVC3 有疑问。我的目标是使用表单编辑数据库中的特定记录,然后将其发布回控制器,控制器负责检查记录的字段并将它们提交到数据库中。 数据通过使用 ViewModel 从 Controller 传递到 View,因此 DefaultDataBinding 在这种情况下不适用。我尝试了很多方法,我监控了与 Fiddler 的通信,但我无法解决我的问题。 Phil Haack描述的方法不起作用,FormCollection也不起作用。
这里有代码:
ViewModels:我将它传递给 View 以创建一个表。名称和项目名称列表(表格列标题)只是要显示。我想返回 Id、月份(它们作为参数正确传递并表示表行标题),最重要的是 Items 的 ActualValue 及其 Id(我的数据库中有一个关联表,其中包含 Id、Itemid 和 Month 作为键)
public class EditViewModel
{
[ScaffoldColumn(false)]
public int Id { get; set; }
[ScaffoldColumn(false)]
public int Month { get; set; }
public string Name { get; set; }
public List<ItemViewModel> ItemList { get; set; }
}
public class ItemViewModel
{
[ScaffoldColumn(false)]
public int ItemId { get; set; }
public string ItemName { get; set; }
public float ActualValue { get; set; }
}
View:View 被强类型化为 ViewModels.EditViewModel 并通过提交按钮发送字段。我必须使用 foreach 循环来生成表格,因为我不知道提前有多少项
控制器:控制器必须更新从与特定 ID 和月份相关的视图传递的每个 kpi。
[HttpPost]
public ActionResult EditMonth(int Id, int Month, //FormCollection kpiValues)
我希望我足够清楚,我期待得到一些帮助。非常感谢!
【问题讨论】:
-
对不起摩西,我是新来的,我必须改进我发布问题的方式。我的问题是“如何将包含未知数量元素的嵌套列表(在 qanother 列表中)从强类型视图传递给控制器?”
标签: c# asp.net-mvc post viewmodel