2010-02-05 3 views
1

Simple question. Je dois me tromper totalement, mais j'ai pensé qu'il valait la peine de poser cette question.Est-ce vraiment violer MVC Séparation des préoccupations

L'accès à ViewData ["Message"] dans la vue est-il correct selon la séparation des problèmes décrits dans MVC?

Par exemple, dans le contrôleur:

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

dans la vue que nous appelons

<%= ViewData[“Message”] %> 

L'alternative (ne viole pas la séparation des préoccupations) est d'avoir le message défini dans le modèle de vue.

Par exemple dans le contrôleur:

UserViewModel.Message = “Display this message” 

dans la vue que nous appelons

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

Toutes les idées très appréciées.

Répondre

1

Je ne vois pas comment ils devraient être différents, sauf que le dernier est fortement typé? Vous transmettez des données à la vue et laissez la vue faire son travail.

3

La différence entre ViewData et Model est que le premier est un sac de propriété non typé et le dernier est un objet fortement typé. Mais ils agissent tous les deux comme des «modèles» pour votre View.

0

Pour moi, je pense que le concept des trois (ViewData, ViewBag et TempData) est une violation de MVC. Très pratique à utiliser mais ne suit pas le diagramme found here.

La vue ne doit pas savoir ce que le contrôleur transmet. J'ai effectivement asked the same question just a few minutes ago et j'ai trouvé ce post.

Questions connexes