PowerArgs.Cli.PageStack.RegisterRoute C# (CSharp) Method

RegisterRoute() public method

public RegisterRoute ( string route, Func pageFactory ) : void
route string
pageFactory Func
return void
        public void RegisterRoute(string route, Func<Page> pageFactory)
        {
            if (route.EndsWith("/")) route = route.Substring(0, route.Length - 1);

            if (Regex.IsMatch(route, @"^{?[a-zA-Z0-9_\*]+}?(\/{?[a-zA-Z0-9_]+}?)*$") == false)
            {
                throw new FormatException("Routes must be made up of alphanumeric characters or underscores separated by '/' characters.  Segments can be surrounded with {} to represent a variable");
            }

            routes.Add(route, pageFactory);
        }

Usage Example

        public void PageStackBasic()
        {
            PageStack stack = new PageStack();

            bool observableWorked = false;

            PropertyChangedEventHandler firstChecker = (sender, e) =>
            {
                if(e.PropertyName != nameof(PageStack.CurrentPage))
                {
                    return;
                }

                Assert.IsNotNull(stack.CurrentPage);
                Assert.AreEqual(0, stack.CurrentPage.RouteVariables.Count);
                observableWorked = true;
            };

            stack.PropertyChanged += firstChecker;
            stack.RegisterRoute("Home", () => new Page());
            stack.Navigate("Home");
            Assert.IsTrue(observableWorked);
            stack.PropertyChanged -= firstChecker;

            try
            {
                stack.Navigate("BadRoute");
                Assert.Fail("An exception should have been thrown");
            }
            catch (KeyNotFoundException)
            {

            }

            stack.RegisterRoute("Applications/{ApplicationId}/Components/{ComponentId}", () => new Page());

            stack.Navigate("Applications/foo/Components/bar");
            Assert.IsTrue(stack.CurrentPage.RouteVariables.Count == 2);
            Assert.AreEqual("foo", stack.CurrentPage.RouteVariables["ApplicationId"]);
            Assert.AreEqual("bar", stack.CurrentPage.RouteVariables["ComponentId"]);
        }
All Usage Examples Of PowerArgs.Cli.PageStack::RegisterRoute