コード例 #1
0
        public string ResolvePath(BeatrixPage page, string rawUrl)
        {
            var controllerAttribute = page
                .GetType()
                .GetCustomAttributes(true)
                .SingleOrDefault(x => typeof(ControllerAttribute).IsAssignableFrom(x.GetType())) as ControllerAttribute;

            var controllerName = (controllerAttribute != null)
                ? controllerAttribute.ControllerType.Name
                : BeatrixConventions.Instance.GetControllerNameFromPage(page);

            int urlStartIndex = (page.Url == "/")
                ? 0
                : page.Url.Length;

            return string.Concat(
                "/",
                BeatrixConventions.Instance.GetRouteFromControllerName(controllerName),
                rawUrl.Substring(urlStartIndex)
                ).TrimEnd('/').ToLower();
        }
コード例 #2
0
ファイル: BeatrixConventions.cs プロジェクト: Beatrix/Beatrix
 public string GetDefaultControllerNameFromPage(BeatrixPage page)
 {
     var name = page.GetType().Name;
     return string.Concat(name.Substring(0, name.LastIndexOf("Page")), "Controller");
 }
コード例 #3
0
 protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType, BeatrixPage page)
 {
     return Container.With(page.GetType(), page).GetInstance(controllerType) as IController;
 }
コード例 #4
0
 protected virtual IController GetControllerInstance(RequestContext requestContext, Type controllerType, BeatrixPage page)
 {
     var constructor = controllerType.GetConstructor(new Type[] { page.GetType() });
     return constructor.Invoke(new [] { page }) as IController;
 }