我正在创建一个简单的聊天应用程序,用户在主页中选择他的名字然后,他可以在聊天页面中发送消息。我不知道如何在不使用模型的情况下记住用户的名字。有帮助吗?
答案 0 :(得分:3)
您可以将其存储在Session
中。在Session["UserName"] = "John Doe";
之类的控制器中分配它然后,在视图中,您可以直接访问@Session["UserName"]
,或通过ViewModel传递它。
答案 1 :(得分: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();
}
希望帮助。