Created
January 25, 2020 04:15
-
-
Save tstivers1990/b0dc2e9e30ccff89c413c31cb494f566 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public abstract class PageModelBase : PageModel | |
{ | |
public virtual RedirectToPageResult RedirectToPage<TPageModel>() | |
where TPageModel : PageModel | |
{ | |
return RedirectToPage<TPageModel>((object) null); | |
} | |
public virtual RedirectToPageResult RedirectToPage<TPageModel>( | |
string pageHandler) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPage<TPageModel>(pageHandler, (object) null); | |
} | |
public virtual RedirectToPageResult RedirectToPage<TPageModel>( | |
string pageHandler, | |
object routeValues) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPage<TPageModel>(pageHandler, routeValues, null); | |
} | |
public virtual RedirectToPageResult RedirectToPage<TPageModel>( | |
object routeValues) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPage<TPageModel>(null, routeValues, null); | |
} | |
public virtual RedirectToPageResult RedirectToPage<TPageModel>( | |
string pageHandler, | |
string fragment) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPage<TPageModel>(pageHandler, null, fragment); | |
} | |
public virtual RedirectToPageResult RedirectToPage<TPageModel>( | |
string pageHandler, | |
object routeValues, | |
string fragment) | |
where TPageModel : PageModel | |
{ | |
return new RedirectToPageResult(PageNameHelper.GetPageName<TPageModel>(), pageHandler, | |
routeValues, fragment); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanent<TPageModel>() | |
where TPageModel : PageModel | |
{ | |
return RedirectToPagePermanent<TPageModel>(null); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanent<TPageModel>( | |
object routeValues) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPagePermanent<TPageModel>(null, routeValues, null); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanent<TPageModel>( | |
string pageHandler) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPagePermanent<TPageModel>(pageHandler, (object) null); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanent<TPageModel>( | |
string pageHandler, | |
object routeValues) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPagePermanent<TPageModel>(pageHandler, routeValues, null); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanent<TPageModel>( | |
string pageHandler, | |
string fragment) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPagePermanent<TPageModel>(pageHandler, null, fragment); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanent<TPageModel>( | |
object routeValues, | |
string fragment) | |
where TPageModel : PageModel | |
{ | |
return RedirectToPagePermanent<TPageModel>(null, routeValues, fragment); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanent<TPageModel>( | |
string pageHandler, | |
object routeValues, | |
string fragment) | |
where TPageModel : PageModel | |
{ | |
return new RedirectToPageResult(PageNameHelper.GetPageName<TPageModel>(), pageHandler, | |
routeValues, true, fragment); | |
} | |
public virtual RedirectToPageResult RedirectToPagePreserveMethod<TPageModel>( | |
string pageHandler = null, | |
object routeValues = null, | |
string fragment = null) | |
where TPageModel : PageModel | |
{ | |
return new RedirectToPageResult(PageNameHelper.GetPageName<TPageModel>(), pageHandler, | |
routeValues, false, true, fragment); | |
} | |
public virtual RedirectToPageResult RedirectToPagePermanentPreserveMethod<TPageModel>( | |
string pageHandler = null, | |
object routeValues = null, | |
string fragment = null) | |
where TPageModel : PageModel | |
{ | |
return new RedirectToPageResult(PageNameHelper.GetPageName<TPageModel>(), pageHandler, | |
routeValues, true, true, fragment); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class PageNameHelper | |
{ | |
private const string RootNamespace = "ProjectName.Web.Pages"; | |
public static string GetPageName<TPageModel>() where TPageModel : PageModel | |
{ | |
var pageModelType = typeof(TPageModel); | |
var pageName = GetPageName(pageModelType); | |
var pagePath = GetPagePath(pageModelType); | |
return pagePath.Length > 0 | |
? $"{pagePath}/{pageName}" | |
: $"/{pageName}"; | |
} | |
private static string GetPageName(Type pageModelType) | |
{ | |
if (!pageModelType.Name.EndsWith("Model")) | |
throw new InvalidOperationException("Invalid PageModel name."); | |
return pageModelType.Name.Substring(0, pageModelType.Name.Length - "Model".Length); | |
} | |
private static string GetPagePath(Type pageModelType) | |
{ | |
if (pageModelType.Namespace == null || !pageModelType.Namespace.StartsWith(RootNamespace)) | |
throw new InvalidOperationException("Invalid PageModel namespace."); | |
return pageModelType.Namespace.Substring(RootNamespace.Length).Replace(".", "/"); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class UrlHelperExtensions | |
{ | |
public static string PageLink<TPageModel>(this IUrlHelper urlHelper, | |
string pageHandler = null, | |
object values = null, | |
string protocol = null, | |
string host = null, | |
string fragment = null) | |
where TPageModel : PageModel | |
=> urlHelper.PageLink(PageNameHelper.GetPageName<TPageModel>(), pageHandler, values, protocol, host, fragment); | |
public static string Page<TPageModel>(this IUrlHelper urlHelper) | |
where TPageModel : PageModel | |
=> urlHelper.Page(PageNameHelper.GetPageName<TPageModel>()); | |
public static string Page<TPageModel>(this IUrlHelper urlHelper, object values) | |
where TPageModel : PageModel | |
=> urlHelper.Page(PageNameHelper.GetPageName<TPageModel>(), values); | |
public static string Page<TPageModel>(this IUrlHelper urlHelper, string pageHandler) | |
where TPageModel : PageModel | |
=> urlHelper.Page(PageNameHelper.GetPageName<TPageModel>(), pageHandler); | |
public static string Page<TPageModel>(this IUrlHelper urlHelper, string pageHandler, object values) | |
where TPageModel : PageModel | |
=> urlHelper.Page(PageNameHelper.GetPageName<TPageModel>(), pageHandler, values); | |
public static string Page<TPageModel>(this IUrlHelper urlHelper, string pageHandler, object values, | |
string protocol) | |
where TPageModel : PageModel | |
=> urlHelper.Page(PageNameHelper.GetPageName<TPageModel>(), pageHandler, values, protocol); | |
public static string Page<TPageModel>(this IUrlHelper urlHelper, string pageHandler, object values, | |
string protocol, string host) | |
where TPageModel : PageModel | |
=> urlHelper.Page(PageNameHelper.GetPageName<TPageModel>(), pageHandler, values, protocol, host); | |
public static string Page<TPageModel>(this IUrlHelper urlHelper, string pageHandler, object values, | |
string protocol, string host, string fragment) | |
where TPageModel : PageModel | |
=> urlHelper.Page(PageNameHelper.GetPageName<TPageModel>(), pageHandler, values, protocol, host, fragment); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment