2016-04-30 50 views

回答

2

您可以将它存储在Session。将其分配到控制器中,如Session["UserName"] = "John Doe";然后,在视图中,您可以直接访问@Session["UserName"],或通过ViewModel将其传递。

+0

谢谢。这是我正在寻找的解决方案。 –

2

将UserName设置为AuthCookie;

FormsAuthentication.SetAuthCookie(UserName, false); 

在Global.asax中AuthenticateRequest方法,你可以做一个公共票字符串变量和解密验证cookie。

FormsAuthenticationTicket ticket; 
public static string tempTicket = ""; 

protected void Application_AuthenticateRequest() { 

     HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
     if (authCookie != null) 
     { 
      ticket = FormsAuthentication.Decrypt(authCookie.Value); 
      if (ticket != null) 
      { 
       tempTicket = ticket.Name; 
      } 
      else 
      { 
       tempTicket = ""; 
      } 
     } 

    } 

而且你可以调用在Global.asax中定义的tempTicket,你可以像这样;

string globalTicketVariable = MvcApplication.tempTicket; 

更新1:数据类型缺失,我只是宣布他们。这里有一个使用它的例子。

public ActionResult Login(){ 
      if (globalTicketVariable != null && globalTicketVariable != "") 
      { 
        DataContext Context = new DataContext(); 
        User TempUser = Context.User.Where(x => x.UserID == (int)globalTicketVariable).FirstOrDefault(); 
        if (TempUser != null) 
        { 
         return RedirectToAction("Success", "SuccessPage"); 
        } 
      } 
      return View(); 
} 

希望有助于。

相关问题