为要使用的所有控制器和视图设置变量

时间:2017-02-22 14:29:53

标签: c# asp.net asp.net-mvc razor

如果可能的话,我想在所有页面/视图中设置我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上调用公共操作。

0 个答案:

没有答案