Asp.Net 视路-我怎么相匹配的整个网址?
-
06-07-2019 - |
题
我试图建立一个全面的路线的跟踪时的一个会员串的网址。一个affilite码的标志是通过一个 x
随后通过一个 int
, ,而且只会出现在一个网址(但在此之前,查询string)。
这个想法是,我将提取会员的ID,做一些记录,然后做一个301同样的请求没有会员身份证。
例如:
http://www.domain.com/x32
http://www.domain.com/x32/
http://www.domain.com/path/to/something/x32
http://www.domain.com/x32?query=string
http://www.domain.com/x32/?query=string
http://www.domain.com/path/to/something/x32?query=string
http://www.domain.com/path/to/something/x32/?query=string
我有这个路线
routes.Add(new Route("{url}/x{affiliateExternalId}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(
new { controller = "Home", action = "LogCookieAndRedirect" }
),
Constraints = new RouteValueDictionary(new { affiliateExternalId = @"\d{1,6}" })
});
其中只有比赛
http://www.domain.com/path/x32
http://www.domain.com/path/x32/
什么我需要做到匹配的一切,并通过查询串的控制器吗?还有一个 *
操作者,我怀疑我应该使用,但是我不能把它做什么,我需要。
解决方案
{*url}
将符合整个路径,而不仅仅是一个分段。然而,由于它与全的道路,你不能那么匹配的会员身份证上结束。该路线将与每一个要求。你可以得到解决,通过添加一条路线的约束,以检查 url
有一个会员ID在结束:
routes.MapRoute(
"WithAffiliate",
"{*url}",
new { controller="Home", action="LogCookieAndRedirect" },
new { url = @"/x[0-9]+$" }
);
你的行动会然后需要分析附属ID url
参数本身。如果你有选择修改的网址结构,这将是可能的匹配ID如果在开始的路径:
routes.MapRoute(
"WithAffiliate",
"x{affiliateExternalId}/{*url}",
new { controller="Home", action="LogCookieAndRedirect" }
);
不隶属于 StackOverflow