为什么HtmlHelper.ViewBag与HtmlHelper.ViewContext.ViewBag不同

时间:2013-04-14 08:30:12

标签: asp.net-mvc

我已经为HtmlHelper编写了扩展方法,该方法是从需要访问ViewBag以获取页面信息的母版页面调用的。

这是方法签名:

public static string BuildFavoritesTitle(this HtmlHelper htmlHelper) { }

如果我访问

,我会注意到方法内部
htmlHelper.ViewContext.ViewBag

我得到空的ViewBag,但是如果访问

htmlHelper.ViewBag

我得到了“正确的”ViewBag。通过正确我的意思是ViewBag与内部页面中添加的项目。

我想知道有什么区别,为什么有多个ViewBag?

1 个答案:

答案 0 :(得分:1)

您在视图数据字典中设置值的目的是什么?是否有某种属性来确定如何呈现控件?

考虑向BuildFavoritesTitle

添加其他参数
public static string BuildFavoritesTitle(this HtmlHelper htmlHelper, string parameter) { }

然后从您的视图中调用帮助方法(我不确定这是否是您的目标?):

@Html.BuildFavoritesTitle("myParameter")

此外,如果它是一个控件,或者你试图在你的html帮助器中构建某种标记,请考虑使用MvcHtmlString作为返回类型。