c# - MVC3 和重写

标签 c# asp.net asp.net-mvc-3 url-rewriting url-routing

我正在编写一个 MVC3 应用程序,它需要使用 http://[server]/[City]-[State]/[some term]/形式的 URL 重写。

据我了解,MVC3 包含一个路由引擎,它使用在 Global.asax 文件中定义的 {controler}/{action}/{id}:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

传统上(在非 MVC 应用程序中),我会使用一些 URL 重写风格来解码 url,例如 http://www.myserver.com/City-State/somesearch/查询看起来像这样的字符串参数: http://www.myserver.com/city=City&state=State&query=somesearch

请记住,此请求将来自 http://www.myserver.com/Home

这是否可以在无需指定 Controller 的情况下完成...像这样:

routes.MapRoute(
            "Results",
            "{city}-{state}/{searchTerm}",
            new { controller = "Results", action = "Search" }
        );

...还是最好列出 Controller ?

您如何在 MVC3 环境中处理此问题?

谢谢。

最佳答案

asp.net MVC3 中的 URL 重写:- 您可以在 Global.asax 文件中编写用于重写 url 的代码:-

       //Default url
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",
            "", 
            new { controller = "Home", action = "Index", id = "" }
        );

      //others url rewriting you want

        RouteTable.Routes.MapRoute(null, "Search/{City_State}/{ID}", new { controller = "Home", action = "Search" });

关于c# - MVC3 和重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118840/

相关文章:

c# - 即时生成或更新 OperationContract

c# - ASP.NET 从 anchor 获取以 px 为单位的文本位置

c# - 设置HttpClient的Authorization Header

c# - 如何反序列化 JArray?

C# 重载 try/catch

ASP.NET HTTP 连接限制

c# - mvc3 checkboxfor enum 没有枚举在模型中

c# - MVC3 和 URL(使用区域,构建 <a> 标签有问题)

asp.net-mvc-3 - 验证属性被触发两次

c# - ASP.NET.Core 可以在没有 DI 容器的情况下使用吗