Asp.Net MVC的父Html.ViewBag来自于局部内部

时间:2013-10-22 13:20:42

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

我遇到了以通用方式解决这个问题的问题。

我们有自己的BeginForm和FieldFor,beginForm计算该特定目标网址的PermissionLevel并在ViewData上保存一些信息。然后FieldFor使用该信息在渲染控件上显示各种注释。

现在问题是当使用partial来渲染表单内的字段时。似乎父级的ViewData在部分内部不可用(使用默认的Html.Partial扩展进行渲染),因此注释不会显示。

调试它我发现WebViewPage的ViewData属性是共享的,但Html.ViewData上的那个不是。由于我使用帮助器来渲染字段,我只在HtmlHelper中有viewdata而不是视图的属性。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

通常,您只需使用以下

@ViewBag.Property

您没有指定渲染部分的方式,但在某些情况下,如果您用于渲染部分的方法没有携带ViewBag,则可能需要使用以下内容来访问viewbag。

@ViewContext.Controller.ViewBag.Property