使用 ViewData 将对象传递给局部视图
Passing object to partial view using ViewData
我要为我的应用程序构建一个使用许多向导的助手。
对于我的观点,有一个简单的调用:
@using (var wiz = MyHelper.EditWizard(Translate(Keys.User.ChangePasswordTitle)))
{
// RenderPartial(...)
}
而 MyHelper
是 HtmlHelper
自己的实现,它具有封装为 属性.
的原始帮助对象
由于向导可以包含多个步骤,因此内容可以拆分为多个部分视图。
变量 wiz
有一些 public 方法我需要在我的局部访问。
问题是,如何传递 wiz
-object?
在 EditWizard()
中,我正在尝试将向导添加到 ViewData
。
myHelper.HtmlInternal.ViewData["currentWizard"] = theWizard;
然而,在我的部分,ViewData
-字典总是空的。目前我尝试使用
获取数据
var wiz = (Wizard)ViewData["currentWizard"];
但是 wiz
总是 null
。
我们使用 HtmlHelper.Partial
,它的第二个参数是一个对象模型:
@Html.Partial("YourWizardOrWhatever", wiz)
在这种情况下,Wiz 是作为局部视图的模型提供的。您也可以转发您的整个模型:
@Html.Partial("YourWizardOrWhatever", Model)
或者您可以使用匿名类型来制作几个参数:
@Html.Partial("YourWizardOrWhatever", new { step = Model.Step, answer = Model.LastAnswerOrSomething })
我最终使用了
myHelper.HtmlInternal.ViewContext.HttpContext.Items["currentWizard"] = theWizard;
在我的辅助方法中,在我的部分视图中反之亦然
var wiz = (Wizard)ViewContext.HttpContext.Items["currentWizard"]
为什么永远不应该使用它或者它是否合法?
我要为我的应用程序构建一个使用许多向导的助手。 对于我的观点,有一个简单的调用:
@using (var wiz = MyHelper.EditWizard(Translate(Keys.User.ChangePasswordTitle)))
{
// RenderPartial(...)
}
而 MyHelper
是 HtmlHelper
自己的实现,它具有封装为 属性.
由于向导可以包含多个步骤,因此内容可以拆分为多个部分视图。
变量 wiz
有一些 public 方法我需要在我的局部访问。
问题是,如何传递 wiz
-object?
在 EditWizard()
中,我正在尝试将向导添加到 ViewData
。
myHelper.HtmlInternal.ViewData["currentWizard"] = theWizard;
然而,在我的部分,ViewData
-字典总是空的。目前我尝试使用
var wiz = (Wizard)ViewData["currentWizard"];
但是 wiz
总是 null
。
我们使用 HtmlHelper.Partial
,它的第二个参数是一个对象模型:
@Html.Partial("YourWizardOrWhatever", wiz)
在这种情况下,Wiz 是作为局部视图的模型提供的。您也可以转发您的整个模型:
@Html.Partial("YourWizardOrWhatever", Model)
或者您可以使用匿名类型来制作几个参数:
@Html.Partial("YourWizardOrWhatever", new { step = Model.Step, answer = Model.LastAnswerOrSomething })
我最终使用了
myHelper.HtmlInternal.ViewContext.HttpContext.Items["currentWizard"] = theWizard;
在我的辅助方法中,在我的部分视图中反之亦然
var wiz = (Wizard)ViewContext.HttpContext.Items["currentWizard"]
为什么永远不应该使用它或者它是否合法?