更新后刷新会话
Refresh session after an update
我希望会话在更新后获得新值,但在我重新登录之前它总是获得旧值...
我有一张名为 VIP 会员的小截图:
https://i.stack.imgur.com/DVhAZ.png
当我点击激活的 Vip 时,值发生变化,但视图上没有图像。
我的看法:
@if (session.IsVip == false)
{
<p>Xin Chào @session.UserName!</p>
<span>@Html.ActionLink("Đăng xuất", "Logout", "User")</span>
}
else
{
<p>Xin Chào @session.UserName!</p> <img src="~/Assets/Client/img/Vip.png" />
<span>@Html.ActionLink("Đăng xuất", "Logout", "User")</span>
}
我的控制器:
public ActionResult Load(string id,khachhang c)
{
var session = Session[CommonConstants.USER_SESSION] as UserLogin;
var mm = new MuaVipModel();
mm.setupvip(session.UserID);
return View();
}
查看:
@using (Html.BeginForm("Load","MuaVip",FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Thanh toán thành công, bạn có thể kích hoạt VIP!</h4>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Kích hoạt vip" class="btn btn-default" />
</div>
</div>
</div>
}
我的存储过程:
create PROCEDURE [dbo].[setupVip]
@MaKhachHang nvarchar(10)
AS
BEGIN
SET NOCOUNT ON;
UPDATE khachhang
SET IsVip = 1
WHERE MaKhachHang = @MaKhachHang
END
登录:
var dao = new UserDao();
var result = dao.Login(model.Username, Encryptor.MD5Hash(model.Password), false);
if (result == 1)
{
var user = dao.GetById(model.Username);
var userSession = new UserLogin();
userSession.UserName = user.Username;
userSession.UserID = user.MaKhachHang;
userSession.GroupID = user.MaNhomNguoiDung;
userSession.IsVip = (bool)user.IsVip;
var listCredentials = dao.GetListCredential(model.Username);
Session.Add(CommonConstants.SESSION_CREDENTIALS, listCredentials);
Session.Add(CommonConstants.USER_SESSION, userSession);
return RedirectToAction("Index", "Home");
}
如果你想随时添加或更新会话值,那么你可以这样写:
Session["UserName"]="XYZ"; // Session UserName will have value XYZ
如果要更新此内容,请使用您的其他方法。
Session["UserName"]="ABC"; // Session UserName new value ABC
我希望会话在更新后获得新值,但在我重新登录之前它总是获得旧值...
我有一张名为 VIP 会员的小截图: https://i.stack.imgur.com/DVhAZ.png
当我点击激活的 Vip 时,值发生变化,但视图上没有图像。
我的看法:
@if (session.IsVip == false)
{
<p>Xin Chào @session.UserName!</p>
<span>@Html.ActionLink("Đăng xuất", "Logout", "User")</span>
}
else
{
<p>Xin Chào @session.UserName!</p> <img src="~/Assets/Client/img/Vip.png" />
<span>@Html.ActionLink("Đăng xuất", "Logout", "User")</span>
}
我的控制器:
public ActionResult Load(string id,khachhang c)
{
var session = Session[CommonConstants.USER_SESSION] as UserLogin;
var mm = new MuaVipModel();
mm.setupvip(session.UserID);
return View();
}
查看:
@using (Html.BeginForm("Load","MuaVip",FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Thanh toán thành công, bạn có thể kích hoạt VIP!</h4>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Kích hoạt vip" class="btn btn-default" />
</div>
</div>
</div>
}
我的存储过程:
create PROCEDURE [dbo].[setupVip]
@MaKhachHang nvarchar(10)
AS
BEGIN
SET NOCOUNT ON;
UPDATE khachhang
SET IsVip = 1
WHERE MaKhachHang = @MaKhachHang
END
登录:
var dao = new UserDao();
var result = dao.Login(model.Username, Encryptor.MD5Hash(model.Password), false);
if (result == 1)
{
var user = dao.GetById(model.Username);
var userSession = new UserLogin();
userSession.UserName = user.Username;
userSession.UserID = user.MaKhachHang;
userSession.GroupID = user.MaNhomNguoiDung;
userSession.IsVip = (bool)user.IsVip;
var listCredentials = dao.GetListCredential(model.Username);
Session.Add(CommonConstants.SESSION_CREDENTIALS, listCredentials);
Session.Add(CommonConstants.USER_SESSION, userSession);
return RedirectToAction("Index", "Home");
}
如果你想随时添加或更新会话值,那么你可以这样写:
Session["UserName"]="XYZ"; // Session UserName will have value XYZ
如果要更新此内容,请使用您的其他方法。
Session["UserName"]="ABC"; // Session UserName new value ABC