Почему все ненавидят ViewData?

Интересно, почему все так ненавидят ViewData?
Я считаю это весьма полезным и удобным. Я говорю вам, почему: обычно каждое действие контроллера имеет свою собственную ViewModel, поэтому он используется только один раз, и мне очень утомительно изменять класс ViewData каждый раз, когда мне нужно добавить дополнительную часть данных для просмотра (добавление дополнительного поля в класс обычно приводит к изменение его конструктора). Вместо этого я могу написать в контроллере

ViewData["label"] = someValue;
// in mvc 3 even better:
ViewData.Label = someValue

и в представлении

<%= ViewData["label"] %>
<%-- mvc 3: --%>
<%= ViewData.Label %>

или для сложных типов:

<% ComplexType t = (ComplexType)ViewData["label"]; %> // and use all benefits of strong typing 
<%= t.SomeProperty %>

Написав действие контроллера, мне не нужно переключаться на другой класс, когда мне нужно добавить некоторые данные для просмотра. И большой плюс для меня: не наводнять ваш проект бессмысленными классами и не переключаться между ними и другими.
Я согласен с тем, что использование «волшебных строк» ​​может привести к ошибкам, которые не улавливаются компилятором, но эти ошибки локализуются в очень небольшой части кода и могут быть обнаружены очень быстро. Кроме того, как вы думаете, ребята, работающие с динамическими языками (rails, django), вообще могут жить без строгой типизации?)

Что вы думаете об использовании ViewData?

9
задан kilonet 21 October 2010 в 14:30
поделиться