【问题标题】:Does this really violate MVC Separation of Concerns这真的违反 MVC 关注点分离吗
【发布时间】:2010-02-05 03:26:32
【问题描述】:

简单的问题。我一定是完全错了,但我认为值得问这个问题。

根据 MVC 中描述的关注点分离,在 View 中访问 ViewData[“Message”] 是否正确?

例如在Controller中:

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)%>

非常感谢任何想法。

【问题讨论】:

    标签: asp.net-mvc separation-of-concerns


    【解决方案1】:

    ViewDataModel的区别在于前者是无类型的属性包,后者是强类型的对象。但它们都充当您View 的“模型”。

    【讨论】:

      【解决方案2】:

      我看不出这些应该有什么不同,除了最后一个是强类型的?您将数据传递给视图,然后让视图完成它的工作。

      【讨论】:

        【解决方案3】:

        对我来说,我认为所有三个(ViewData、ViewBag 和 TempData)的概念都违反了 MVC。使用非常方便,但不遵循图表found here

        视图不应该知道控制器正在传递什么。我其实是asked the same question just a few minutes ago 然后我找到了这个帖子。

        【讨论】:

          猜你喜欢
          • 2011-05-20
          • 2012-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-01
          • 2017-05-21
          • 2014-02-15
          • 2010-10-12
          相关资源
          最近更新 更多