Новый ViewModel не устарел шаблон ViewModel в ASP.NET MVC 3, верно? - PullRequest
2 голосов
/ 26 августа 2010

В моем понимании шаблон ViewModel был разработан для передачи всех соответствующих данных в View, потому что 1) представление не должно выполнять какой-либо поиск данных или логику приложения, и 2) оно обеспечивает безопасность типов, проверку во время компиляции иредактор intellisense в шаблонах представления.

Поскольку динамические выражения определяются во время выполнения, означает ли это, что мы не получаем ни одного из плюсов 2)?

1 Ответ

3 голосов
/ 26 августа 2010

Вы не потеряете ни одну из существующих функциональных возможностей. Вы по-прежнему можете иметь строго типизированное представление, так что при доступе к свойству Model оно будет иметь указанный вами тип. Единственное, что добавлено, - это более короткий способ доступа к элементам в словаре ViewData.

Вместо следующего

ViewData["MyData"]

вы можете иметь

View.MyData

Обратите внимание, что вы не теряете безопасность типов, потому что у вас ее никогда не было. В первом случае ключ является строкой (нет уверенности в том, что он существует в словаре), а значение является объектом, поэтому если вы не приведете его, вы не сможете сделать с ним ничего особенного. В последнем случае вы также не получаете intellisense, и возвращаемое значение должно быть приведено к чему-то полезному.

Фактически реализация View.MyData просто берет имя свойства («MyData») и возвращает значение, поступающее из словаря ViewData.

Возможно, единственное, что вы потеряете, - это возможность иметь пробелы или другие символы, которые не являются допустимыми идентификаторами C # в именах ваших ключей.

...