我正在尝试将一些参数(几个字符串)从页面传递到要在主页面中呈现的局部视图。为此,我传递了一个匿名类型的对象,它不断给我一个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似乎对我来说无法管理。
答案 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;
}