对于ASP来说是比较新的。NET核心和Razor页面,我仍在努力熟悉处理某些逻辑的最佳方法。
我有一个模型,它封装了我希望在每一页上都能找到的每一个属性或模型。
现在,我有一个内存模型,叫做
CurrentEnvironment
我将从不同的页面访问一些属性和对象。
当前环境
片段:
public class CurrentEnvironment {
public string Url {get;set;}
public string IPAddress {get;set;}
Public AppUser User {get;set;}\
//.....
}
每一页都实现
BasePageModel
它本身实现了
PageModel
.如果页面需要身份验证,则存在
SecurePageModel
和
[Authorize]
实现
BasePageModel
BasePageModel
:
public CurrentEnvironment CurrentEnvironment { get; set; } = new CurrentEnvironment();
public override Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
{
CurrentEnvironment.IPAddress = context.HttpContext.Connection.RemoteIpAddress?.ToString();
CurrentEnvironment.Url = context.HttpContext.Request.GetDisplayUrl();
return base.OnPageHandlerExecutionAsync(context, next);
}
安全页面模型
片段:
[Authorize]
public class SecurePageModelAsync : BasePageModelAsync
{
//......
public override Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
{
CurrentEnvironment.User = _userManager.GetUserAsync(HttpContext.User).Result;
return base.OnPageHandlerExecutionAsync(context, next);
}
}
我的问题是:
-
有没有更好的方法来处理这个问题并产生相同的结果?
-
我猜我想创建一个服务来处理
当前环境
大概如果是,我将如何填充服务?中间件?