强类型视图 - 通过编辑/创建表单发布其他数据

时间:2010-09-08 20:53:48

标签: asp.net-mvc asp.net-mvc-2

我有一个简单的(希望)情景。

  • 席位表
  • 电脑桌
  • SeatComputers表(由于座位可以分配多台计算机)

我有一个强烈输入“座位”的“编辑”视图。我设法在该页面上获得一个多选列表,以便分配或取消分配计算机(jquery添加/删除项目)。

但是,当我提交表单时,选择列表的内容不会发布到控制器操作。

我认为这是因为“计算机”选择列表不是模型属性。

是否有将附加数据发布到模型属性之外的控制器?

我的表看起来像这样: alt text

2 个答案:

答案 0 :(得分:3)

您不需要发布此列表,因为您已将其存储到数据库中,甚至还有一个存储库来获取它,不是吗?因此,唯一需要发布的是用户选择,因为这是您唯一不知道的事情。在POST操作中,使用存储库重建视图模型中的列表,就像在呈现表单的GET操作中一样。

  

无论如何都要发布附加信息   数据到控制器之外   模特的属性?

当然,只需将它们包含为输入字段,以便在POST和控制器操作中发送它们的值:

[HttpPost]
public ActionResult Index(SomeViewModel model, string param1, string, param2)
{
    ...
}

但我再次坚持:你不需要这个。

答案 1 :(得分:0)

我通常创建ViewModel,它结合了视图所需的Entity模型中的任何属性,然后指向Visual Studio生成初始视图。

所以代替System.Web.Mvc.ViewPage<Seats>System.Web.Mvc.ViewPage<SeatEditorViewModel>

这样,无论您的视图需要什么属性,甚至都不必成为实体的一部分。