代码之家  ›  专栏  ›  技术社区  ›  Matthew

ASP.NET MVC如何更容易创建特定于内容/设备的视图?

  •  1
  • Matthew  · 技术社区  · 16 年前

    我一直在读的ASP.NET MVC的一个好处是(比传统的ASP.NET)更容易创建特定于内容和/或特定于设备的视图,例如纯HTML、JSON、XML或iPhone Targed HTML等。我确实看到了视图逻辑与控制器逻辑的更结构化分离是如何促进这一点的。

    假设我们有一个传统的ASP.NET应用程序,它有一个合理实现的体系结构(ha!)这实际上将业务逻辑与视图逻辑分离开来,并且其.aspx文件不是意大利面条式代码,也不是与标记混杂在一起的,与业务逻辑、数据库访问以及其他不应该存在的东西。假设传统的ASP.NET应用程序是这样构造的,那么创建这些干净的、专门构建的视图比在ASP.NET MVC应用程序中更困难吗?

    或者,是否仅仅是ASP.NET MVC的问题,因为MVC模式和模型、视图和控制器逻辑之间的更好的强制分离,引导开发人员以更好的关注分离来编写更清晰的代码,从而更容易创建这些专门构建的视图?

    2 回复  |  直到 13 年前
        1
  •  1
  •   lomaxx    16 年前

    我相信ASP.NET MVC框架(不一定是模式)使创建专门构建的视图变得更容易,主要是因为您可以向完全相同的URL发出请求,并且根据请求头返回专为该请求定制的actionResult。

    WebForms使这变得更加困难,因为您通常请求一个特定的资源(即ASPX页面),而不是请求一个URL。当您请求该资源时,webforms引擎会使返回请求的资源以外的其他资源更加困难。

    尽管如此,使用网络表单并非不可能。您可以对WebForms做一些类似的事情,在那里您可以修改响应头并返回完全不同的内容,但是它不像MVC框架中那样直观。

        2
  •  1
  •   jamesmillerio    16 年前

    ASP.NET确实让它变得容易得多,因为正如Lomaxx所说,URL并没有静态地绑定到特定的资源。MVC在基本控制器类上提供方法,允许您返回不同类型的actionResults。例如,如果您从json helper方法返回一个actionresult,并将要返回的对象作为参数,那么它将把它们格式化为json数据并相应地呈现出来。我肯定也有一个XML助手,但我个人到目前为止还不需要它。

    This article 作者Scott Hanselman描述了如何为特定的移动设备创建自定义视图。我还没有使用他的教程,但它看起来很直接。它允许您检测正在浏览的设备支持哪些功能,这些功能允许您创建自定义视图,以便在许多移动设备上工作。