gpt4 book ai didi

c# - 如何创建 URL 友好路由和删除索引

转载 作者:太空狗 更新时间:2023-10-30 01:29:31 24 4
gpt4 key购买 nike

我知道如何创建一个 URL 友好的路由,我也知道如何删除索引。但我想知道如何将两者结合起来?

使用本教程 https://www.jerriepelser.com/blog/generate-seo-friendly-urls-aspnet-mvc/我能够添加以下代码以允许 url 友好路由。

routes.Add("ProductDetails", new SeoFriendlyRoute("drink/{id}",
new RouteValueDictionary(new { controller = "Drink", action = "Index" }),
new MvcRouteHandler()));

因此,我的网址不再是 test.com/index/drink/1,它现在变成了 test.com/index/drink/coke

我的下一组代码是从 url 中删除索引。

routes.MapRoute("DrinkRoute",
"drink/{id}",
new { controller = "Drink", action = "Index" });

这将成功地将 test.com/index/drink/1 转换为 test.com/drink/1

请问如何将两者结合起来,以便我可以有一条路线引导我进行正确的 Controller 操作并显示 test.com/drink/coke

路由配置

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

最佳答案

您还可以使用属性路由实现相同的目的,这将提供对所需路由的更多控制。

引用 Attribute Routing in ASP.NET MVC 5

首先,您需要通过在 RouteConfig 中调用 routes.MapMvcAttributeRoutes(); 来启用属性路由。确保它在基于约定的路由之前注册。

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

//Attribute routes
routes.MapMvcAttributeRoutes();

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

启用属性路由后,您可以通过注释操作和 Controller 来指定路由。

[RoutePrefix("drink")]
public class DrinkController : Controller {
[HttpGet]
[Route("{name}")] // GET drink/coke
public ActionResult Index(string name) {

//...use name to get model

return View();
}

//..
}

上面的 DrinkController.Index 操作现在映射到 GET drink/coke 假设 test.com 是 Controller 的主机,如图所示在你的例子中。

任何未被路由属性注释的 Controller 或操作将默认回到路由表中注册的基于约定的路由(如果有的话)。

这意味着您可以为 Controller 混合定义基于约定和基于属性的路由。

但是请注意,一旦您在 Controller 上使用属性路由,您就必须在其所有公共(public)操作中使用它。

关于c# - 如何创建 URL 友好路由和删除索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51369091/

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