如何访问传递到局部视图的匿名类型对象?

时间:2012-02-22 20:02:59

标签: c# asp.net asp.net-mvc-3

我正在尝试将一些参数(几个字符串)从页面传递到要在主页面中呈现的局部视图。为此,我传递了一个匿名类型的对象,它不断给我一个RuntimeBinderException。鉴于我的尝试,我对收到错误并不感到惊讶,但我不知道还有什么可以尝试。

视图\主页\ PageWithPartialView.cshtml

@Html.Partial("DynamicPartialView", new { paramFromPageToPartialView = "value" })

视图\共享\ DynamicPartialView.cshtml

@model dynamic // Doesn't make a difference

@{
    // This is where I need to access and display the parameters 
    // passed from the main page

    // Throws RuntimeBinderException
    // Cannot apply indexing with [] to an expression of type 'object'
    var try1 = Model["paramFromPageToPartialView"];

    // Throws RuntimeBinderException
    // 'object' does not contain a definition for 'paramFromPageToPartialView'
    var try2 = Model.paramFromPageToPartialView;
}

如果部分观点不是这样做的话,我就是开放的。部分视图有几百行代码可供生成,因此自定义HtmlHelpers似乎对我来说无法管理。

1 个答案:

答案 0 :(得分:3)

ViewBag旨在解决此类问题。而不是在模型的部分中使用paramFromPageToPartialView,而是从ViewBag

中使用它

<强>视图\主页\ PageWithPartialView.cshtml

@{ViewBag.paramFromPageToPartialView = "value";}
@Html.Partial("DynamicPartialView")

<强>视图\共享\ DynamicPartialView.cshtml

@model dynamic // Doesn't make a difference

@{
    var try3 = ViewBag.paramFromPageToPartialView;
}