Действительно ли это нарушает разделение интересов MVC?

Простой вопрос. Я должен быть совершенно неправ, но я подумал, что стоит задать этот вопрос.

Является ли доступ к ViewData["Message"] в представлении правильным в соответствии с разделением задач, описанным в MVC?

Например, в контроллере:

ViewData[“Message”] =  “Display this message”;

В представлении мы называем

<%= ViewData[“Message”]  %>

Альтернативой (не нарушающей принцип разделения проблем) является установка сообщения в модели представления.

Например, в контроллере:

UserViewModel.Message = “Display this message”

В представлении мы называем

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<UserViewModel>" %>
<%= Html.TextBox("Message", Model Message)%>

Любые идеи с благодарностью.


person Rajithakba    schedule 05.02.2010    source источник


Ответы (3)


Разница между ViewData и Model заключается в том, что первый является нетипизированным набором свойств, а второй — строго типизированным объектом. Но они оба действуют как «модели» для вашего View.

person Franci Penov    schedule 06.02.2010

Я не понимаю, чем они должны отличаться, кроме того, что последний строго типизирован? Вы передаете данные представлению, и пусть представление делает свое дело.

person Luhmann    schedule 06.02.2010

Для меня я думаю, что концепция всех трех (ViewData, ViewBag и TempData) является нарушением MVC. Очень удобно использовать, но не следует диаграмме здесь .

Представление не должно знать, что передает Контроллер. На самом деле я задал тот же вопрос всего несколько минут назад, а затем нашел это Почта.

person Denise Michelle del Bando    schedule 31.12.2015