У меня есть проект asp.net MVC, который, когда кто-то заходит на домашнюю страницу, представляет несколько кнопок в зависимости от того, в каких отделах он работает.Затем они могут выбрать отдел, в который они хотят войти.
Следующий контроллер затем устанавливает cookie-файл сеанса с соответствующим contractId.
Однако, если они снова регистрируются в другом отделе, cookie-файл нене перезаписываются новым contractId
public ActionResult SetContractId(int contractId)
{
Session["LoggedContractId"] = contractId;
return RedirectToAction("IndexLoggedIn");
}
. Я вызываю вышеуказанное с помощью кнопок, отображаемых в представлении, используя следующее:
@foreach (var item in Model)
{
<div class="col-lg-offset-4 col-md-8" style="margin-bottom: 25px">
@Html.ActionLink("Login under this Contract", "SetContractId", new { contractId = item.ContractId }, new { @Class = "btn btn-primary" }) <b>@Html.DisplayFor(modelItem => item.DepartmentName)</b>
</div>
}
Я использую это значение cookie для установкидо системы для них.Я использую переменную сеанса следующим образом:
public ActionResult StartDebrief()
{
if (Session["LoggedContractId"] == null)
{
return RedirectToAction("IndexLogin", "Home", null);
}
else
{
var user = User.Identity.Name;
string userName = user.Substring(7);
var creator = Peopledb.People.FirstOrDefault(x => x.Username == userName);
var creatorContractId = (int)Session["LoggedContractId"];
//Use creatorContractId in the viewmodel and other areas
return View(viewModel);
}
}
Есть идеи?