У меня есть класс, который использует строки c stati и c MvcHtmlString. Я пытаюсь изменить то, что уже в классе, чтобы использовать Entity Framework. Однако, кажется, мне не нравится, когда я пытаюсь использовать
userid = User.Identity.GetUserId();
. Он не знает, что это за пользователь. Я пытался получить roleId обычным способом, и это тоже не нравится.
Вот текущая настройка. Все, что мне нужно, это текущие пользователи UserId и RoleId
public static MvcHtmlString GetMenuBarPage(Guid? ParentId)
{
StringBuilder sb = new StringBuilder();
GeneralEntities db = new GeneralEntities();
//get role id and role regarding to role bind this
//var userid = User.Identity.GetUserId();
var userId = GetUserInfo("userid");
var RoleId = GetUserInfo("roleid");
var cacheItemKey = "tylrwb" + userId + "Us" + RoleId;
var global = HttpRuntime.Cache.Get(cacheItemKey);
if (global == null)
{
// Added IsForNavbar Pre-dates 02/09/2020
global = db.MenuPermissions.Where(i => i.RoleId == RoleId || i.UserId == userId && i.IsForNavBar != false).ToArray();
HttpRuntime.Cache.Insert(cacheItemKey, global, null, DateTime.Now.AddMinutes(2), System.Web.Caching.Cache.NoSlidingExpiration);
}
sb.Append("<ul class=\"sidebar-menu \"data-widget=\"tree\">");
sb.Append("<li class=\"header\">MAIN NAVIGATION</li>");
sb.Append("<li> <a href=\"" + MicrosoftHelper.MSHelper.GetSiteRoot() + "/Dashboard\"> <i class=\"fa fa-dashboard\"></i> <span>Dashboard</span> </a> </li>");
sb.Append(GetMenuBar(ParentId, (MenuPermission[])global));
sb.Append("</ul>");
return MvcHtmlString.Create(sb.ToString());
}
Я также хотел бы отметить, что это в классе Publi c stati c.
Спасибо за ваша помощь!
ОБНОВЛЕНИЕ: После некоторых копаний я обнаружил, что если вы не в контроллере, вы должны использовать HttpContext.Current.User.Identity.getUserId (); То же самое с ролями ..