【发布时间】:2014-02-04 21:10:27
【问题描述】:
我有一个GroupPageViewModel,它有一个public string GroupName { get; },还有一个服务方法的输入模型EditGroupInputModel,它也有一个public string GroupName { get; set; }。
在页面视图中,我想为Group、Html.Partial("~/Views/Group/_EditGroup.cshtml", ???) 或使用EditorFor 呈现编辑器。
我希望_EditGroup.cshtml 的model 成为EditGroupInputModel,但它需要从父视图的GroupName 属性中知道GroupName。
我意识到我可以使用 Html.Partial("~/Views/Group/_EditGroup.cshtml", new EditGroupInputModel() { GroupName = Model.GroupName}) ,但我觉得这在某种程度上偏离了 MVC 框架的意图(或者我只是没有看到这样的示例)。
这是将此类参数传递给局部视图模型的“最佳实践”方式,还是使用 MVC 框架有更好的方法?
【问题讨论】:
-
您不能在 EditGroupInputModel 中创建 ParentGroupName 属性吗?然后你只需将模型传递给你的局部视图: Html.Partial("~/Views/Group/_EditGroup.cshtml", model.EditGroupInputModel)
-
@markpsmith,并不是每个
GroupPageViewModel都应该有一个EditGroupInputModel(编辑只是你可以做的许多操作之一,为了争论) -
啊好吧,我想我误会了
-
在构建模型类时利用 EditGroupInputModel.GroupName 视图模型的
{get;set;}属性。在集合中,您可以使 this.GroupName = base.GroupName 像这样。我不确定语法,但我知道你必须使用 {get;set}
标签: c# asp.net-mvc asp.net-mvc-4 razor