如果可能的话,我想在所有页面/视图中设置我BaseController
中的公共变量。我有一个名为header.cshtml
的部分视图,其中包含一个充满客户及其ID的下拉列表。当用户选择客户时,我需要将CustomerId
值存储到BaseController
上的公共变量中。如果我的方法有问题,请纠正我,但我需要一种方法让用户选择一个客户,然后导航到另一个页面(其中包含标题视图),下拉列表需要保留他们在上一页中选择的客户
这是我的BaseController
:
public class BaseController : Controller
{
private CurrentUser _currentUser;
public CurrentUser CurrentUser { get; set; }
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
Session.TryGetAuthenticatedValue(out _currentUser);
CurrentUser = _currentUser;
}
public ActionResult SetSelectedCustomerId(int value)
{
CurrentUser.SelectedCustomerId = value;
return Json(new { success = true });
}
}
Header.cshtml
:
<div class="col-md-3" style="padding-top:5px;">
@Html.DropDownList("customers", ViewBag.CustomerList as IEnumerable<SelectListItem>,
"--Select Customer--",
new
{
@id = "ddlCustomer",
@style = "width:390px;",
@onchange = "javascript:SetCustomerId(this.value);",
@class = "form-control"
});
</div>
我缺少的部分是ajax或其他方法,可以在BaseController上调用公共操作。