使用ViewData

时间:2016-03-29 13:01:18

标签: c# asp.net-mvc razor viewdata

我要为我的应用程序构建一个使用许多向导的帮助程序。 对于我的观点,有一个简单的电话:

@using (var wiz = MyHelper.EditWizard(Translate(Keys.User.ChangePasswordTitle)))
{
    // RenderPartial(...)       
}

MyHelperHtmlHelper的自己的实现,它将原始的helper-object封装为属性。

由于向导可以包含多个步骤,因此可以将内容拆分为多个部分视图。 变量wiz有一些我需要在部分中访问的公共方法。

问题是,我如何传递wiz - 对象?

EditWizard()内部我尝试将向导添加到ViewData

myHelper.HtmlInternal.ViewData["currentWizard"] = theWizard;

然而,在我的部分中,ViewData - 字典总是空的。目前我尝试用

获取数据
var wiz = (Wizard)ViewData["currentWizard"];

wiz总是null

2 个答案:

答案 0 :(得分:5)

我们使用HtmlHelper.Partial作为第二个参数,它是一个对象模型:

@Html.Partial("YourWizardOrWhatever", wiz)

在这种情况下,Wiz是作为局部视图的模型提供的。您也可以转发整个模型:

@Html.Partial("YourWizardOrWhatever", Model)

或者您可以使用匿名类型来制作一些参数:

@Html.Partial("YourWizardOrWhatever", new { step = Model.Step, answer = Model.LastAnswerOrSomething })

答案 1 :(得分:-1)

我最终使用了

myHelper.HtmlInternal.ViewContext.HttpContext.Items["currentWizard"] = theWizard;

在我的帮助方法中,反之亦然在我的局部视图中

var wiz = (Wizard)ViewContext.HttpContext.Items["currentWizard"]

为什么永远不会使用它或者它是否合法?