gpt4 book ai didi

asp.net-mvc-4 - ASP.NET MVC4 自定义路由

转载 作者:行者123 更新时间:2023-12-04 02:48:44 25 4
gpt4 key购买 nike

我想创建简单的博客引擎。对于花哨和干净的 url,我想使用在 MVC4 中实现的路由机制。

我在 RouteConfig.cs 中添加了以下几行:

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

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

routes.MapRoute(
name: "ArticleList",
url: "Articles/{category}/{page}",
defaults: new
{
controller = "Articles",
category = UrlParameter.Optional,
page = 1
});
}
}

如果我在 Web 浏览器 url 中写入:
http://localhost:6666/Articles/SomeCategory/3

我想移动到这个 Controller :
public class ArticlesController : ControllerBase<IHomeService>
{
public ActionResult Index(string category, int page = 0)
{
return View("~/Views/Article/Articles.cshtml");
}

}

参数 category = "SomeCategory"和 page = 1。

我收到的只是
“/”应用程序中的服务器错误。
无法找到该资源。

怎么了?

最佳答案

       routes.MapRoute(
name: "ArticleList",
url: "{controller}/{category}/{page}",
defaults: new
{
category = UrlParameter.Optional,
page = 1,
action = "Index"
},
constraints: new
{
controller = "Articles"
}
);


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

编辑

我应该将其添加到答案中,但我很着急:
  • 首先注册您的自定义路由,自定义越多,它们的优先级就越高。
  • 在上面使用约束或硬编码的示例中,路由产生相同的结果。约束更加灵活,因为您可以使用正则表达式来限制您的路由所针对的 Controller /操作/参数值。例如,如果您添加一个使用/category/page 模式的新路由,则可以相应地修改 Controller 约束:

    限制条件:新
    {
    Controller = @"^(文章|另一个 Controller )$"
    }
  • 关于asp.net-mvc-4 - ASP.NET MVC4 自定义路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795095/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com