使用ViewData将对象传递给局部视图

Kin*_*sin 3 c# asp.net-mvc viewdata razor

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

@using (var wiz = MyHelper.EditWizard(Translate(Keys.User.ChangePasswordTitle)))
{
    // RenderPartial(...)       
}
Run Code Online (Sandbox Code Playgroud)

而是MyHelper一个自己的实现,HtmlHelper其原始的helper-object被封装为一个属性.

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

问题是,我怎样才能通过wiz-object?

在里面,EditWizard()我正在尝试将向导添加到ViewData.

myHelper.HtmlInternal.ViewData["currentWizard"] = theWizard;
Run Code Online (Sandbox Code Playgroud)

但是,在我的部分中,ViewData-dictionary总是为空的.目前我尝试获取数据

var wiz = (Wizard)ViewData["currentWizard"];
Run Code Online (Sandbox Code Playgroud)

但wiz总是如此null.

cla*_*ect 5

我们使用HtmlHelper.Partial其作为第二个参数的对象模型:

@Html.Partial("YourWizardOrWhatever", wiz)
Run Code Online (Sandbox Code Playgroud)

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

@Html.Partial("YourWizardOrWhatever", Model)
Run Code Online (Sandbox Code Playgroud)

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

@Html.Partial("YourWizardOrWhatever", new { step = Model.Step, answer = Model.LastAnswerOrSomething })
Run Code Online (Sandbox Code Playgroud)