Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 子类化ViewPage以共享公共ViewData:它是哑的吗?_.net_Asp.net Mvc - Fatal编程技术网

.net 子类化ViewPage以共享公共ViewData:它是哑的吗?

.net 子类化ViewPage以共享公共ViewData:它是哑的吗?,.net,asp.net-mvc,.net,Asp.net Mvc,我正在设置一个向导。我的所有向导视图都需要访问常用数据才能显示,如TotalWizardSteps和CurrentWizardStep。我正试图找到将这些公共数据添加到ViewDataDictionary的最佳方法。我正在考虑创建自己的WizardStepViewPage。此子类将具有一个属性“WizardData”,该属性返回WizardData对象。这将允许我在视图中编写以下代码: <p>Wizard Step:<%= WizardData.CurrentStep %>

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

<p>Wizard Step:<%= WizardData.CurrentStep %></p>
向导步骤:

此WizardData对象的备份存储将是ViewDataDictionary和一些无法复制的键,如“\uu TheWizardData”。我用actionfilter设置这个键的值

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

我想:

  • 对html标记中wizardData的强类型访问
  • 使我的操作忽略构造数据的需要
  • 使我的强类型viewData类忽略wizardData

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


我看不出有什么好的理由让您想对强类型模型隐藏向导数据,但是如果您真的想这样做,为什么不为
ViewPage
创建一个扩展方法而不是继承呢?继承对于不同类型的
ViewPage
(类型化、非类型化)来说不太合适。

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


我看不出有什么好的理由让您想对强类型模型隐藏向导数据,但是如果您真的想这样做,为什么不为
ViewPage
创建一个扩展方法而不是继承呢?继承对于不同类型的
ViewPage
(类型化、非类型化)来说不起作用。

如果您在每个页面中都需要此向导数据,我看不出您想要隐藏它的任何原因。如果我可以让viewData不知道wizardData,那么我可以创建一个WizardControllerBase,并将此向导功能与任何viewData一起重用,而不必记住如何或需要生成向导数据。不过,我可能弄错了。我想我可以创建一个需要IWizardData的WizardStepResult,但最好不要将wizardData的要求分散到所有操作中。我想让基础控制器帮我处理这个问题。实际上,扩展无法工作。WizardData将仅对某些页面可用,而不是对所有页面可用。谢谢你的帮助。这正是我不想隐藏它的原因。如果你在每一页都需要这个WizardData的东西,我看不出您想要隐藏它的任何原因。如果我可以让viewData不知道wizardData,那么我可以创建一个WizardControllerBase,并将此向导功能与任何viewData一起重用,而不必记住如何或需要生成向导数据。不过,我可能弄错了。我想我可以创建一个需要IWizardData的WizardStepResult,但最好不要将wizardData的要求分散到所有操作中。我想让基础控制器帮我处理这个问题。实际上,扩展无法工作。WizardData将仅对某些页面可用,而不是对所有页面可用。不过谢谢你的帮助。这正是我不想隐藏它的原因。我完全按照你的建议做了,取得了很好的成功。ViewDataDictionary魔术字符串是其中唯一一个看起来有点笨拙的部分,但我也能接受它。我完全按照你的建议做了,取得了很好的成功。ViewDataDictionary魔术字符串是其中唯一看起来有点笨拙的部分,但我也能接受它。