我正在尝试创建一个仅在URL中使用特定参数时才匹配的路由。
例如:
routes.MapRoute(
name: "BannerAds",
url: "Go/{Web}",
defaults: new { controller = "CommunicationsAlias", action = "BannerAds", web = UrlParameter.Optional }
);
我希望网址与http://www.domain.com/Go/Web?=111222
匹配但不适用于http://www.domain.com/Go/Advertising
如何通过这种方式更改路线?
答案 0 :(得分:3)
您需要在路线中将网址的那一部分设为静态:
routes.MapRoute(
name: "BannerAds",
url: "Go/Web",
defaults: new { controller = "CommunicationsAlias", action = "BannerAds" }
);
然后将这条路线放在一般的路线之上:
routes.MapRoute(
name: "BannerAds",
url: "Go/{Web}",
defaults: new { controller = "CommunicationsAlias", action = "BannerAds", web = UrlParameter.Optional }
);
答案 1 :(得分:0)
你应该能够做到这一点:
routes.MapRoute(name: "BannerAds",
url: "Go/Web",
defaults: new { controller = "CommunicationsAlias", action = "BannerAds", web = UrlParameter.Optional });
并在控制器中手动解析查询字符串,如下所示:
public ActionResult BannerAds()
{
string idStr = Request.QueryString.ToString().Trim('='); // strip of leading '='
int id;
if (!int.TryParse(idStr, out id))
{
return HttpNotFound();
}
...
}
答案 2 :(得分:0)
routes.MapRoute(
name: "BannerAds",
url: "Go/Web",
defaults: new { controller = "CommunicationsAlias", action = "BannerAds", web = UrlParameter.Optional }
);
如果你真的只想抓住
http://www.domain.com/Go/Web?x=111222
然后编写控制器以检查查询字符串
修改强>
?=111222
不是一个正确的查询字符串 - 我真的不明白为什么要抓住它 - 通常在写作时会有键值对,如?key=111222
或?x=111222
这样你就可以检查x
或key
的值,如果它等于111222,那就做点什么