MVC在控制器中,视图模型如何定义为全局变量?

大刘0417 2017-02-21 01:22:33
使用EF
视图模型构造函数使用一个用户信息型进行初始化,这个用户信息是登录后保存在session中的(Session["UserInfo"])。
我在控制器中定义在方法外部,会出错,请问如何解决:



视图模型中的代码如下:

public class LoginedUserInfoModel
{
//用户--角色业务
IBLL.IT_Staff_UserInfo_RoleService _UserInfo_RoleService = new BLL.T_Staff_UserInfo_RoleService();
//角色--权限业务
IBLL.IT_Staff_Role_ActionService _RoleActionService = new BLL.T_Staff_Role_ActionService();
//权限业务
IBLL.IT_Staff_ActionInfoService _ActionInfoService = new BLL.T_Staff_ActionInfoService();

/// <summary>
/// 用户信息
/// </summary>
private Model.T_Staff_UserInfo _UserInfo { get; set; }

public LoginedUserInfoModel(Model.T_Staff_UserInfo userInfo)
{
_UserInfo = userInfo;
}

public Model.T_Staff_UserInfo GetUserInfo()
{
return _UserInfo;
}

/// <summary>
/// 获取登录用户对应的权限信息
/// key为权限id
/// value为T_Staff_ActionInfo集合
/// </summary>
/// <returns></returns>
public Dictionary<string, IQueryable<Model.T_Staff_ActionInfo>> GetUserActionInfo()
{

//获取权限信息,去重的
var objs = (from ur1 in _UserInfo_RoleService.LoadEntities(r => r.c_UserInfoID == _UserInfo.c_ID)
join ra1 in _RoleActionService.LoadEntities(r => true) on ur1.c_RoleID equals ra1.c_RoleID
orderby ra1.c_ActionID
select new { actionid = ra1.c_ActionID }).Distinct();
Dictionary<string, IQueryable<Model.T_Staff_ActionInfo>> userActionInfo = new Dictionary<string, IQueryable<Model.T_Staff_ActionInfo>>();

foreach (var item in objs)
{
userActionInfo.Add(item.actionid.ToString(), _ActionInfoService.LoadEntities(a => a.c_ID == item.actionid));
}
return userActionInfo;
}
}
...全文
561 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2017-02-24
  • 打赏
  • 举报
回复
引用 5 楼 pengwei0417 的回复:
[quote=引用 3 楼 hanjun0612 的回复:] 外部的赋值session 要定义属性

private LoginedUserInfoModel currentUser;
public LoginedUserInfoModel CurrentUser 
       {
get {return (LoginedUserInfoModel )System.Web.HttpContext.Current.Session[""]}
set {currentUser=value;}
}
请教放在什么位置?[/quote] 放在方法外就行了
大刘0417 2017-02-24
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
外部的赋值session 要定义属性

private LoginedUserInfoModel currentUser;
public LoginedUserInfoModel CurrentUser 
       {
get {return (LoginedUserInfoModel )System.Web.HttpContext.Current.Session[""]}
set {currentUser=value;}
}
请教放在什么位置?
我是三峡移民 2017-02-22
  • 打赏
  • 举报
回复
3楼正解,自己可以下去查一下
正怒月神 版主 2017-02-21
  • 打赏
  • 举报
回复
外部的赋值session 要定义属性

private LoginedUserInfoModel currentUser;
public LoginedUserInfoModel CurrentUser 
       {
get {return (LoginedUserInfoModel )System.Web.HttpContext.Current.Session[""]}
set {currentUser=value;}
}
大刘0417 2017-02-21
  • 打赏
  • 举报
回复
引用 1 楼 Chinajiyong 的回复:
加个static关键字,

static LoginedUserInfoModel _loginedInfo


加了,没有用,还是错误?
EnForGrass 2017-02-21
  • 打赏
  • 举报
回复
加个static关键字, static LoginedUserInfoModel _loginedInfo

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧