【问题标题】:How does ASP.NET MVC make it easier to create purpose-built, content/device-specific views?ASP.NET MVC 如何更轻松地创建专用的内容/设备特定视图?
【发布时间】:2010-12-12 21:21:45
【问题描述】:

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

假设我们有一个具有合理实现架构的传统 ASP.NET 应用程序(哈哈!),它实际上将业务逻辑与视图逻辑分开,并且其 .aspx 文件不是意大利面条式代码或混合了与业务逻辑混合的标记和数据库访问和其他不应该存在的东西。鉴于这样构造的传统 ASP.NET 应用程序,创建这些干净的、专门构建的视图是否比在 ASP.NET MVC 应用程序中更难?

或者,这仅仅是 ASP.NET MVC 的问题,凭借 MVC 模式以及模型、视图和控制器逻辑之间更好的分离,引导开发人员编写更清晰的代码,更好地分离关注点,因此是否可以更轻松地创建这些专门构建的视图?

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    我相信 ASP.NET MVC 框架(不一定是模式)可以更轻松地创建专门构建的视图,主要是因为您可以向完全相同的 URL 发出请求,并根据请求标头返回一个 ActionResult,即专为该要求量身定制。

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

    话虽如此,使用网络表单并非不可能。您可以对 web 表单执行类似的操作,您可以在其中修改响应标头并返回完全不同的内容,但是它不像 MVC 框架中那样直观。

    【讨论】:

    • lomaxx 和 Bit Destroyer - 我明白你的意思,事实上,你帮助我意识到我正在以一种比它需要的更复杂的方式思考这个问题。我现在看到答案是 ASP.NET MVC 将“请求的资源”与“结果”解耦的函数,以及正如 Bit Destroyer 指出的那样,您如何获得额外的好处,例如内置功能将结果序列化为 JSON。
    【解决方案2】:

    ASP.NET 确实让它变得容易多了,因为正如 lomaxx 所说,URL 不是静态绑定到特定资源的。 MVC 在基本控制器类上提供了允许您返回不同类型的 ActionResults 的方法。例如,如果您从 Json 帮助器方法返回一个 ActionResult 并将您想要返回的对象作为参数,它会将它们格式化为 Json 数据并相应地呈现它们。我敢肯定 Xml 也可能有一个助手,但我个人到目前为止还不需要它。

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

    【讨论】:

    • Bit Destroyer - 请在下面查看我对 lomaxx 的评论,因为我的实现也应归功于您。我接受了他的答案 b/c 你的答案很相似,他是第一个,但我赞成你的答案,因为你对 json 助手和你链接到的文章提出了很好的观点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多