public IEnumerable<string> Get()
        {
            string routeTemplate = "weather/{areacode}/{days}";
            IHttpRoute route = new HttpRoute(routeTemplate);
            route.Defaults.Add("days", 2);
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "/");
            IHttpVirtualPathData pathData;

            //1. 不能提供路由变量areacode的值
            Dictionary<string, object> values = new Dictionary<string, object>();
            pathData = route.GetVirtualPath(request, values);
            yield return pathData == null ? "N/A" : pathData.VirtualPath;

            //2. values无Key为"httproute"的元素
            values.Add("areaCode", "028");
            pathData = route.GetVirtualPath(request, values);
            yield return pathData == null ? "N/A" : pathData.VirtualPath;

            //3. 所有的路由变量值通过values提供
            values.Add("httproute", true);
            values.Add("days", 3);
            IHttpRouteData routeData = new HttpRouteData(route);
            routeData.Values.Add("areacode", "0512");
            routeData.Values.Add("days", 4);
            request.SetRouteData(routeData);
            pathData = route.GetVirtualPath(request, values);
            yield return pathData == null ? "N/A" : pathData.VirtualPath;

            //4. 所有的路由变量值通过request提供
            values.Clear();
            values.Add("httproute", true);
            pathData = route.GetVirtualPath(request, values);
            yield return pathData == null ? "N/A" : pathData.VirtualPath;

            //5. 采用定义在HttpRoute上的默认值(days = 2)
            routeData.Values.Remove("days");
            pathData = route.GetVirtualPath(request, values);
            yield return pathData == null ? "N/A" : pathData.VirtualPath;
        }
Esempio n. 2
0
        public void GetVirtualPath_GeneratesPathWithoutRouteData()
        {
            var route = new HttpRoute("{controller}");
            var request = new HttpRequestMessage();
            var values = new HttpRouteValueDictionary()
            {
                { "httproute", true },
                { "controller", "Customers" }
            };

            IHttpVirtualPathData virtualPath = route.GetVirtualPath(request, values);

            Assert.NotNull(virtualPath);
            Assert.Equal("Customers", virtualPath.VirtualPath);
        }
Esempio n. 3
0
        public void GetVirtualPath_GetsValuesInCaseInsensitiveWay(string controllerKey)
        {
            var route = new HttpRoute("{controller}");
            var request = new HttpRequestMessage();
            request.SetRouteData(
                new HttpRouteData(route, new HttpRouteValueDictionary() {
                    { "controller", "Employees" }
                }));
            var values = new HttpRouteValueDictionary()
            {
                { "httproute", true },
                { controllerKey, "Customers" }
            };

            IHttpVirtualPathData virtualPath = route.GetVirtualPath(request, values);

            Assert.NotNull(virtualPath);
            Assert.Equal("Customers", virtualPath.VirtualPath);
        }