将字段从父视图模型传递到子(部分)视图MVC + Razor

时间:2014-02-04 10:26:18

标签: c# asp.net-mvc asp.net-mvc-4 razor

我有一个GroupPageViewModel,其public string GroupName { get; }和服务方法EditGroupInputModel的输入模型也有public string GroupName { get; set; }

在页面视图中,我想呈现Group,la Html.Partial("~/Views/Group/_EditGroup.cshtml", ???)或使用EditorFor的编辑器。

我希望model的{​​{1}}成为_EditGroup.cshtml,但需要从父视图中了解EditGroupInputModel GroupName } property。

我意识到我可以使用GroupName,但我觉得这有点偏离了MVC框架的意图(或者我还没有看到像这样的例子)。

这是"最佳实践"将这样的参数传递给局部视图模型的方法,还是MVC框架有更好的方法?

1 个答案:

答案 0 :(得分:1)

imho

没有任何问题
Html.Partial("~/Views/Group/_EditGroup.cshtml", new EditGroupInputModel() { GroupName = Model.GroupName}) 

我通常在构造函数中传递父视图的模型,因此由子模型决定它需要什么:

查看:

Html.Partial("~/Views/Group/_EditGroup.cshtml", new EditGroupInputModel(Model))

EditGroupInputModel.cs:

EditGroupInputModel(GroupPageViewModel parentModel) 
{ 
    GroupName = parentModel.GroupName;
}