【发布时间】:2011-12-14 22:43:06
【问题描述】:
在我的 MVC 应用程序中,我有一个类似于此的视图模型:
public class ComplexViewModel
{
public ComplexDetailsViewModel Details1 { get; set; }
public ComplexDetailsViewModel Details2 { get; set; }
}
public class ComplexDetailsViewModel
{
public int Id { get; set; }
public string DisplayValue1 { get; set; }
public string DisplayValue2 { get; set; }
// ...
}
在我看来,我最初是在做以下事情:
@Html.HiddenFor(model => model.Details1.Id)
@Html.HiddenFor(model => model.Details2.Id)
@Html.DisplayFor(model => model.Details1.DisplayValue1)
...
我会将完整模型发布到控制器:
public ActionResult Post(ComplexViewModel model)
我实际上不需要 ComplexViewModel 中的任何东西,除了 Id 值,所以我决定创建另一个专门用于发布数据的视图模型:
public class PostViewModel
{
public int Details1Id { get; set; }
public int Details2Id { get; set; }
}
public ActionResult Post(PostViewModel model)
问题是现在我的@HiddenFor(model => model.Details1.Id) 没有映射到我的 POST 模型,所以实际上没有任何东西被 POST。
有没有办法让我的 POST 模型和我的 GET 模型具有单独的结构,同时仍然使用 HiddenFor 帮助器?
【问题讨论】:
标签: c# asp.net-mvc viewmodel