【问题标题】:MVC RouteConfig allow /Controller/Action.htmlMVC RouteConfig 允许 /Controller/Action.html
【发布时间】:2013-01-24 01:21:46
【问题描述】:

我有一个 MVC 应用程序,并且正在使用路由 /Controller/Action/Id 的标准 routeconfig

我希望它另外捕获 /Controller/Action.html 作为 url 以及指向 /controller/action

我正在使用一个我无法控制的 jquery 库,并且一个函数需要一个指向网页或图像的 url。但是,它似乎不理解没有扩展名的结尾(.html、.php 等)是指向 html 的链接并引发错误。

编辑:我按照以下评论者的建议进行了尝试,但似乎仍然无法正常工作。这是我的路线配置。

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

        routes.MapRoute("routeWithHtmlExtension",
            "{controller}/{action}.html",
            new { controller = "Home", action = "Index" }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

此网址有效:

 http://localhost:14418/Album/Test

这个没有:

 http://localhost:14418/Album/Test.html

【问题讨论】:

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


【解决方案1】:

在 web.config 中

<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
...
</system.webServer>

【讨论】:

    【解决方案2】:

    如果你设置以下路由,它会起作用:

    routes.MapRoute("routeWithHtmlExtension",
        "{controller}/{action}.html",
        new {controller = "Home", action = "Index" }
    );
    

    【讨论】:

    • 我了解默认路由的工作原理,首先进入控制器,然后找到具有匹配参数的匹配操作。我可以从默认项目进入 /Home/Index,但是在添加上面的代码 sn-p 之后,我无法进入 /Home/Index.html =/.
    • @user1308743 如果我是你,我会安装 Phil Haack 的 Routedebugger 并调试它。 stackoverflow.com/questions/1945027/…我已经在股票 ASP.NET MVC 项目版本 4 中测试了该解决方案,并设置了默认的“互联网应用程序”,所以我知道它可以工作。
    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2018-07-24
    • 2012-12-31
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多