Пример #1
0
            public virtual bool Matches(string part, RouteMatch match, ref int points)
            {
                if (part == null)
                {
                    if (optional)
                    {
                        if (name != null)
                        {
                            // matching defaults is better than nothing, so
                            // assign at least a very small number of points
                            points += 1;
                            match.AddNamed(name, defaultVal);
                        }

                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }

                var regExpMatch = exp.Match(part);

                if (regExpMatch.Success)
                {
                    if (name != null)
                    {
                        match.AddNamed(name, part);
                    }
                    // matching non-default nodes is preferred, static nodes even more,
                    // so assign a high number of points.
                    // By using very high values it is ensured that defaults are never
                    // preferred over non-default matches
                    points += isStaticNode ? 4000 : 2000;

                    return(true);
                }

                return(false);
            }
Пример #2
0
		public void RedirectUsingRoute_InheritingParameters()
		{
			engine.Add(new PatternRoute("/something/<param1>/admin/[controller]/[action]/[id]"));

			RouteMatch match = new RouteMatch();
			match.AddNamed("param1", "Homer");

			UrlInfo url = new UrlInfo("area", "home", "index", "", ".castle");
			StubResponse response = new StubResponse(url, urlBuilder, urlBuilder.ServerUtil, match);
			response.RedirectUsingRoute("cart", "checkout", true);
			Assert.AreEqual("/something/Homer/admin/cart/checkout", response.RedirectedTo);
		}