gpt4 book ai didi

asp.net-mvc - 堆栈溢出问题路由

转载 作者:行者123 更新时间:2023-12-02 20:42:22 24 4
gpt4 key购买 nike

如果您查看 SO 问题 URL,您将看到 ID 和“SLUG”被传递到问题 Controller :https://stackoverflow.com/questions/676934/what-do-you-need-to-write-your-own-blog-engine 。我发现有趣的是,您可以更改 URL 的“SLUG”部分,而不会影响应用程序路由请求的能力 example 。我认为实现这一目标的唯一方法是拥有一条接受 id 和“SLUG”的路由,并在 slug 上使用路由约束以确保它遵循某种模式。我必须使用约束来确保拥有两个变量不会导致该路由匹配所有请求。有谁有更好的方法来完成此任务,或者有更高级的路由场景的示例吗?

添加:

我意识到 SLUG 是为了人类可读性,我想在另一个应用程序中复制此功能。实现这一目标的最佳方法是什么。

路线:

routes.MapRoute(
"Id + Slug", // Route name
"Test/{id}/{slug}", // URL with parameters
new // Parameter defaults
{
controller = "Test",
action = "Details",
id = "",
slug = ""
},
new { slug = new SlugConstraint() }
);

简单约束:

public class SlugConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext,
Route route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection)
{
string value = values[parameterName].ToString();

return value.Contains("-");
}
}

最佳答案

您根本不需要使用 slug。它可能只是为了人类可读性和搜索引擎优化。路由时可以忽略它,只需根据 ID 进行操作即可。

例如,点击此处:

Stack Overflow Question Routing

关于asp.net-mvc - 堆栈溢出问题路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/677158/

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