【问题标题】:ASP MVC - Routing Required?ASP MVC - 需要路由?
【发布时间】:2010-06-06 20:19:41
【问题描述】:

我一直在阅读 VS2010 中的 MVC2,它听起来很有趣。我实际上正处于一个大型多租户应用程序项目的中间,并且刚刚开始编写 UI。我正在考虑更改为 MVC,因为我目前还没有那么远。我对路由功能有一些疑问,即它们是否需要使用 MVC 或者我可以或多或少地忽略路由?还是我必须设置一个默认路由记录,让事情像标准 ASPX 一样工作(就路由而言)?

我不想使用路由的原因是我已经定义了自己的自定义 URL“重写”机制(在 session_start 上触发)。此外,我在整个 UI 中使用 jquery 和 opens-standards,而 MVC 的 aspx 无开销方法似乎更适合我已经开始构建应用程序的方式(我根本没有使用 viewstate,例如)。

我想我最关心的是路由是否可以被忽略,我是否必须重新实现我的自定义 URL 重写以使用 MVC,如果是这样,我会怎么做?作为一个新的路由例程,或者坚持使用 session_start(如果这可能的话?)。

最后,我不想对 URL 使用任何远程“智能/可读”的东西 - 对于像 StackOverflow 这样的网站,URL 的可读性是积极的,但如果它不是公共网站,则相反像这个。事实上,在我看来,更友好的 MVC 路由 URL(间接显示方法名称)可能会对我正在开发的私有、非公共网站应用程序造成安全风险。

出于所有这些原因,我很想使用 MVC 的轻量级方面,但完全跳过路由 - 这可能吗?

【问题讨论】:

    标签: asp.net asp.net-mvc routing


    【解决方案1】:

    您可以在没有路由的情况下使其工作,但是您必须重新构建很多框架并构建自己的路由引擎。这实际上没有任何意义,因为 Microsoft 已经为您提供了一个很棒的路由框架。无论如何,您的所有 url 重写规则都可以使用路由框架轻松实现。如果您使用路由框架,则不必在 url 中包含控制器名称的操作名称。只要你能从原始 url 中知道应该执行什么操作,它就可以实现。

    我的建议是阅读路由框架并了解其工作原理。我敢肯定你不会后悔的。

    【讨论】:

    • 谢谢,是的,我读/玩的越多,我就越喜欢它,但也意识到它可能不适合这个特定的项目。我想我会将它用于另一个没有任何安全性和/或 URL 重写的项目。事实上,其他项目将受益于这样一个漂亮、干净的 URL 方案。
    • @evo_9,如果您需要 URL 重写,那么使用 asp.net mvc 是一大优势(很容易编写您的规则)。而且我看不到您所说的安全风险。但是 asp.net mvc 可能并不适合所有解决方案,因此您可能有其他理由不使用它。
    【解决方案2】:

    不要绕过路由

    路由是 Asp.net MVC 必不可少的一部分,忽略它会或多或少地造成麻烦。您可以通过使用 ISS7 URL Rewriting 模块来解决问题,但它仅在您的请求具有特定格式时才有效,否则您最终将为应用中使用的每个请求编写重写。

    好在路由不是你应该害怕的,只要你不开始有一些复杂的路由规则,它就很容易理解。然后你会更深入地研究它,可能会更喜欢它。

    【讨论】:

      猜你喜欢
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多