我让一个控制器调用一个视图。在视图中有一个名为be @Html.Partial("ViewName", model).
的PartialView
,它可以很好地工作。
但是在controller
中,我希望把一些很难放到视图模型中的东西放在视图包中,我将其传递给视图。主视图访问ViewBag
没有问题,但在PartialView
中它不返回任何内容。
在这种情况下,是否可以使用ViewBag
,或者我是否应该将此数据“黑”到传递给视图的模型中(传递给PartialView
的模型,以及传递给嵌套在第一个PartialView
中的PartialView
的模型)?
发布于 2011-04-21 05:54:35
这应该不会有任何问题。在我的HomeController索引操作中,我向ViewBag添加了一条消息:
ViewBag.Message = "Welcome to ASP.NET MVC!";
在索引视图中,我添加了部分视图:
@Html.Partial("ViewName")
在局部视图上,我呈现消息:
@ViewBag.Message
来自下面的评论:当你将一个模型传递到局部视图时,似乎有一个问题。然后,您可以使用以下命令引用原始ViewBag
@ViewContext.Controller.ViewBag.Message
发布于 2013-06-17 19:56:31
如果您正在使用Html.Partial()
的重载,其中viewData
是输入参数之一,例如:
@Html.Partial("PartialViewName", Model, new ViewDataDictionary(ViewBag))
这样,您的局部视图将看不到原始ViewBag中的数据。
删除new ViewDataDictionary(ViewBag)
,这样您就应该编写
@Html.Partial("PartialViewName", Model)
发布于 2015-05-23 06:29:03
最近我遇到了同样的问题,但这里的答案只是变通方法,因为他们建议不要使用viewData
的Html.Partial
重载。但是如果你必须使用这些重载,我相信正确的答案是:
@Html.Partial(
"PartialViewName",
model_object,
new ViewDataDictionary() { { "Value1InViewBag", ViewBag.Value1InViewBag }, { "Value2InViewBag", ViewBag.Value2InViewBag } }
)
我认为如果你需要传递不同的ViewDataDictionary
(例如我使用它来改变HtmlFieldPrefix
),并且因为在视图中你应该知道在ViewBag
中需要什么部分视图,所以命名ViewBag中的所有参数以复制到部分视图中使用的新ViewBag
中应该不成问题(显然ViewBag
使用来自ViewData
的值)。
https://stackoverflow.com/questions/5729784
复制相似问题