【问题标题】:How to use shortened url with asp.net mvc routing?如何在 asp.net mvc 路由中使用缩短的 url?
【发布时间】:2015-01-30 04:45:09
【问题描述】:

我想了解如何设置路由参数以执行以下操作:当用户调用像 http://hostname.com/shortenedurl 这样的缩短 URL 时,我的 asp.net mvc 项目应该调用像 http://hostname.com/controller/action 这样的操作和参数
我以前从来没有做过这样的事情,所以我将不胜感激任何建议。我已经知道如何编码和解码 url 字符串从普通到短再返回。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-routing tinyurl


    【解决方案1】:

    您可以在RouteConfig.cs 文件中定义特定的路由。比如.../MyShortUrl会路由到EmployeeController的Edit方法

    public class RouteConfig
    {
      public static void RegisterRoutes(RouteCollection routes)
      {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
        routes.MapRoute(
          name: "MyShortUrl",
          url: "MyShortUrl",
          defaults: new { controller = "Employee", action = "Edit", id = UrlParameter.Optional }
        );
    
        routes.MapRoute(
          name: "Default",
          url: "{controller}/{action}/{id}",
          defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
      }
    }
    

    注意具体路线需要排在更一般路线之前

    【讨论】:

    • 谢谢。这对 ../AnyShortUrl 有效吗?还是只在 RouteConfig 中指定一个?
    • 不,如果您希望 ../AnyShortUrl 重定向到特定的控制器/动作,尽管您可以使用默认值,但您需要更多路由,例如您可以让 /Employees 转到 @987654328 EmployeeController和/Projects的@方法转到ProjectController的Index方法
    【解决方案2】:

    没有“正常”和“短”之分。你应该使用路由。最好的办法是watch some stuff about Routing 了解这一切是如何运作的。

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • 我们的目标是将 OP 指向关于可用路由的指南之一。在这里给出答案并不能帮助 OP 解决他们的下一个路由挑战,除了一些针对手头任务的临时家庭作业答案。将整个资源缩小为答案是不合理的,因此我更喜欢提供链接。是的,链接会随着时间而变化,这就是为什么可以通过编辑来修复损坏的链接。
    • 您好@Ofer,社区中有人将您的答案标记为低质量。由于您的答案不符合网站标准。包括我和其他少数人查看了您的答案并归类为“这是一个仅链接的答案(而不是垃圾邮件)”。顺便说一句,如果您想指出我们为每个问题提供“评论”选项的内容,您可以使用它。
    • 这是一个答案。我知道 cmets 和 answers 之间的区别(而且我经常会向那些紧随其后的用户指出这一点)。正如您在我的个人资料中看到的那样,我在这里已经有一段时间了。
    猜你喜欢
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2015-12-28
    • 2010-11-22
    相关资源
    最近更新 更多