ViewDataDictionary的差异

时间:2014-07-29 14:10:36

标签: c# asp.net-mvc html-helper

ViewDataDictionary属性的区别在于:

  • HtmlHelper<T>.ViewData vs HtmlHelper<T>.ViewDataContainer.ViewData

1 个答案:

答案 0 :(得分:2)

最初,没有区别。

HtmlHelper<T>.ViewData由构造函数设置(更确切地说,私有字段_viewData由构造函数设置,但那是公共属性ViewData返回的内容)来自传递给构造函数的IViewDataContainer

HtmlHelper<T>来自HtmlHelperHtmlHelper拥有属性ViewDataContainer。这是在构造函数中从传递给构造函数的IViewDataContainer中设置的。

基本上,HtmlHelper<T>.ViewData只是一个&#34;快捷方式&#34;到达HtmlHelper<T>.ViewDataContainer.ViewData

但有一点需要注意。注意我说最初没有区别。

HtmlHelper<T>构造函数将_viewData设置为ViewDataDictionary实例,并传递IViewDataContainer&#39; {{ 1}}属性。

这意味着ViewData最初是HtmlHelper<T>.ViewData副本,但它不是同一个实例。两者包含的数据最初是相同的。但如果您对其中一个进行了更改,则您不会对另一个进行更改。