在2种不同类型的视图上使用局部视图

时间:2012-07-09 18:43:15

标签: c# asp.net-mvc-3 entity-framework razor

我有一个部分视图,我想在2个不同的Stronly-Typed视图上使用。传递的数据只是一个简单的ID整数,但是当我尝试在View#2上渲染数据时,我得到了一个

  

传递到字典中的模型项的类型为CMESurvey.ViewModels.SurveyParticipantViewModel,但此字典需要类型为CMESurvey.Models.SurveyProgramModel的模型项。

以下是错误的部分视图代码:

@Html.Partial("SurveyProgramSubNav", new {ProgramId = Model.ProgramId})

此代码的强度与我的部分视图强类型不同:

@model CMESurvey.Models.SurveyProgramModel 

用于局部视图,并且:

@model CMESurvey.ViewModels.SurveyParticipantViewModel 

对于我遇到麻烦的观点。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

我想你想要:

@Html.Partial("SurveyProgramSubNav", 
   new SurveyProgramModel {ProgramId = Model.ProgramId})

指定模型的强类型而不是自动类型。

答案 1 :(得分:0)

使用PartialViews时,最好避免调用模型,因为不同的视图会有不同的模型(大多数情况下)。 我建议您在部分视图中将Model.ProgramId更改为ViewBag.ProgramId,并在操作中填充此属性,如ViewBag.ProgramId = whatever;

为了简化操作,您可以使用Controller继承并将此设置放在基本控制器上。

此致