Было ли это изменение в поведении ViewData в MVC 5.2.3 преднамеренным? - PullRequest
0 голосов
/ 10 июня 2019

Я недавно обновил свой веб-сайт до более новых версий .Net и MVC и обнаружил, что одно из моих представлений было сбой после слов. Сбой произошел при попытке добавить значение в словарь ViewData перед передачей его в частичное представление. Там сказано, что предмет с таким же ключом уже существует.

Изучив его, я смог воссоздать очень простой пример, который ведет себя по-разному, когда сайт ссылается на System.Web.Mvc версии 5.2.2.0 и System.Web.Mvc версии 5.2.3.0. Текст моего взгляда:

@{ ViewBag.Name = "Value"; }
@{var version = typeof(Controller).Assembly.GetName().Version;}

Version: @version has ViewBag in ViewData: @Html.ViewData.ContainsKey("Name")

Я скопировал одно и то же представление в 2 разных проекта, каждый из которых ссылался на свою версию MVC. Это был вывод:

Испытательная площадка 1: Version: 5.2.2.0 has ViewBag in ViewData: False

Испытательная площадка 2: Version: 5.2.3.0 has ViewBag in ViewData: True

Похоже, что в MVC 5.2.3 элемент, добавленный в ViewBag, отображается в словаре Html.ViewData, а в MVC 5.2.2 - нет.

Из замечаний к выпуску для 5.2.3 я обнаружил только ссылку на исправление ошибки, связанной с ViewData, подробно здесь .

Предоставленная информация не помогает мне понять, что изменилось, или ожидается ли это изменение:

Выпуск 2085 касался того факта, что MVC скопировал ViewData для частичных представлений и шаблонных помощников.

У меня вопрос: если Microsoft четко задокументировала или объяснила это изменение в поведении, и могу ли я с уверенностью предположить, что элемент в ViewBag будет частью словаря ViewData в будущем.

...