【问题标题】:Asp.net mvc route for short url短 url 的 Asp.net mvc 路由
【发布时间】:2014-04-23 18:47:09
【问题描述】:
我将为某些特定页面制作短网址,网站的其余部分将保持不变。
所以我有以下事情
public class publiccontroller {
Public ActionResult GetPublicUrl(){
// This method generates a Random Characters and make url of that random character
// So suppose after this method i have a url for public like this : www.abc.de/HS56J
}
Public ActionResult ServePublic(string publickey){ // publickey will be = HS56J
}
}
那么这将是什么路线,我不想改变我现有的网站功能
提前致谢
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-3
asp.net-mvc-routing
【解决方案1】:
路由代码很简单:
routes.MapRoute(name: "SomeRoutingName",
url: "{publickey}",
defaults: new { controller = "public", action = "ServePublic" });
困难的部分是决定将它放在您的路由顺序中的哪个位置。我不知道您当前的路线如何,因此很难给出准确的答案。如果你只有默认路由,那么你应该把上面的代码放在默认路由前面。
请记住,这将导致某些 url 不再进入主页,例如 /Home。如果您仍然希望它们工作,则必须手动路由它们。或者如果随机 URL 遵循某种模式(正则表达式),您应该定义约束以避免错误路由:
routes.MapRoute(name: "SomeRoutingName",
url: "{publickey}",
defaults: new { controller = "public", action = "ServePublic" },
constraints: new { publickey= "" }); // Put regex for your random key