我问过question。
即使该答案解决了我收到的错误消息..我想找到当前正在使用该应用程序的用户...而不是必须在每个操作方法中写入...
var userIdentity = HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " ");
我想在任何ActionResult方法之前将它放在控制器类的顶部,这样我就可以在每个操作方法中引用变量而不是如上所示的整行...甚至在构造函数中设置它这样我根本不必参考它。
感谢任何帮助。
答案 0 :(得分:4)
您可以创建扩展方法
public static class ExtensionHelper {
public static string UserIdentity(this HttpContext context)
{
return context.User.Identity.Name.Split('\\')[1].Replace(".", " ");
}
}
在Conttroller中使用
var identity = HttpContext.UserIdentity()
如果看起来更干净,你可以用控制器扩展做同样的事情。
public static class ExtensionHelper
{
public static string UserIdentity(this Controller controller)
{
return controller.HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " ");
}
}
在Conttroller中使用
var identity = this.UserIdentity()
那说如果你使用一个合适的IoC或DI框架然后有一个Context类可以注入,如果有一个用户上下文就启动了这个状态会更干净。然后,您可以将其注入Controller,而不是尝试扩展控制器。我个人最喜欢的是AutoFac,但有很多,使用几乎任何DI框架完成此操作相对简单。