gpt4 book ai didi

asp.net-mvc - 如何在 MVC 中创建短 URL?

转载 作者:bug小助手 更新时间:2023-10-28 01:29:23 27 4
gpt4 key购买 nike

假设我想发布(比如在纸质目录中)一些易于输入/内存的“短 URL”,但我希望它们重定向到一个冗长的、对 SEO 友好的 URL。如何使用 MVC 路由实现这一点?

例子:

http://mysite.com/disney

变成

http://mysite.com/travel/planning-your-disney-vacation (with "travel" as the Controller)

我尝试过的事情:

  1. 只需为它设置一条路线。 问题: URL 在浏览器中没有改变(它保持“/disney”。

  2. 使用 NuGet 包 RouteMagic(参见 Haacked's article)。 问题: 我收到一个错误:RouteData 必须包含一个名为“controller”的项目,并且该项目具有非空字符串值。我认为这是因为我的 Controller (“travel”)之前没有像他那样(带有“foo”和“bar”)的静态词???

  3. 使用重定向模块(如 Ian Mercer's)。 问题:在创建我不想要的 URL 时,我的 HTML.ActionLinks 上的路由匹配(Haacked 在他的文章中提到了这一点,并说这就是为什么他让 GetVirtualPath 返回 NULL ...?)

我没有想法,所以任何将不胜感激!谢谢!

最佳答案

您可以设置一个包罗万象的路由,将所有/something 请求定向到特定的操作和 Controller ,例如:

routes.MapRoute(
"ShortUrls",
"{name}",
new {controller = "ShortUrl", action = "Index", name = UrlParameter.Optional}
);

(取决于你的路由的其余部分是如何设置的,你可能不想完全这样做,因为它可能会给你带来一些严重的路由问题——但为了简单起见,这里可行)

然后根据指定的值将您的操作重定向到所需的 URL:

public class ShortUrlController : Controller
{
//
// GET: /ShortUrl/

public ActionResult Index(string name)
{
var urls = new Dictionary<string, string>();
urls.Add("disney", "http://mysite.com/travel/planning-your-disney-vacation");
urls.Add("scuba", "http://mysite.com/travel/planning-your-scuba-vacation");

return Redirect(urls[name]);
}
}

关于asp.net-mvc - 如何在 MVC 中创建短 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9511054/

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