在Asp.net上禁用默认路由Mvc

时间:2016-04-13 08:26:45

标签: c# asp.net-mvc

我正在使用Asp.net Mvc 5和C#。

我想禁用项目中的默认路由。我的地图路线如;

    routes.MapRoute(name: "News",
                    url: "haberler",
                    defaults: new { controller = "News", action = "Index"});


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

当用户访问我网站的新闻页面时,它就像;

www.domain.com/haberler 

但用户也可以访问以下新闻页面;

www.domain.com/news

我想删除"/news"或直接使用seo友好的网址; " /哈伯勒"

那么如何禁用默认路由(Controller-Name-Convension)路由?

4 个答案:

答案 0 :(得分:0)

在MVC中,惯例是将URL映射到特定Action上的特定Controller。删除默认路由以禁用默认约定:

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

答案 1 :(得分:0)

而不是删除"默认" route,你可以添加一个控制器约束

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

像这样,/news将返回404 Not Found。

答案 2 :(得分:0)

class QuizScoreView(TemplateView): template_name = "quiz_score.html" def quiz_score(self, request): # Quiz.objects.create(username= ,score= ) print("Score: "+request.body) 在您的任何路线中都不匹配,因此会引发错误。

答案 3 :(得分:0)

尝试使用此

删除
.element

希望这会对你有所帮助。