对ViewPage进行子类化以共享常见的ViewData:它是否愚蠢?

时间:2009-02-18 19:12:08

标签: .net asp.net-mvc

我正在设置一个向导。我的所有向导视图都需要访问公共数据才能显示TotalWizardSteps和CurrentWizardStep。我正在尝试找到将此常用数据添加到ViewDataDictionary的最佳方法。我正在考虑创建自己的WizardStepViewPage。该子类将具有一个属性“WizardData”,它返回一个WizardData对象。这将允许我在我的视图中编写以下代码:

<p>Wizard Step:<%= WizardData.CurrentStep %></p>

这个WizardData对象的后备存储将是ViewDataDictionary,而一些unlikley可以重现像“__TheWizardData”这样的键。我用actionfilter设置了这个键的值。

这听起来很混乱,但我认为它会起作用。它虽然愚蠢吗?有没有更好的方法来实现这一目标?

我想:

  • html标记中对wizardData的强类型访问
  • 让我的行为无视构建wizardData的必要性
  • 使我的强类型viewData类不知道wizardData

1 个答案:

答案 0 :(得分:3)

我认为您应该创建一个包含必要信息的模型类,并使用它来创建强类型视图。

我认为你没有理由想要从强类型模型中隐藏WizardData,但如果真的想要这样做,为什么不为{{{{}创建扩展方法? 1}}而不是继承?对于不同类型的ViewPage(类型化,无类型化),继承不会很好。