如何将值传递给所有请求的c#MVC控制器

时间:2017-03-27 10:20:17

标签: c# asp.net-mvc

我有一个类似于我的布局标题的要求我必须显示LocationName,UserRole和UserName,除了我们有一些常用的属性,它们将在内部使用来根据请求执行一些逻辑。

为了实现这一点,我创建了一个baseModel

{{1}}

情景1:

我想在成功登录时使用值填充此BaseModel,因此在每个请求中,值应该保持不变,并且我可以使用相同的值。

场景2: 每当我们在任何控制器上从客户端获得任何命中时,基本模型的值都不会被冲走。

事实是我不想使用TempData和ViewBag。因此,我正在寻找一些像这样的替代解决方案" BaseModel"类。

任何建议都会非常值得注意!!!

2 个答案:

答案 0 :(得分:0)

您必须向会话添加BaseModel

所以你确定每个用户只能获得一个。

要设置数据,请使用以下代码:

Session["baseModel"] = baseModel;

获取数据,请使用以下数据:

var baseModel = Session["baseModel"] as BaseModel;

答案 1 :(得分:0)

你的问题很难理解,但如果我得到了要点,你需要在每个页面上呈现一些信息,可能是你布局的一部分。

为此,您应该使用子操作。在您喜欢的任何控制器中(您将明确指定哪个控制器,因此它并不重要),添加如下内容:

[ChildActionOnly]
public ActionResult UserInfoHeader()
{
    // fetch or otherwise build your user info model
    return PartialView("_UserInfoHeader", model);
}

创建_UserInfoHeader.cshtml

@model Namespace.To.BaseModel

<!-- render user info here -->

然后,在您的布局中,在您希望显示此HTML的位置添加以下内容:

@Html.Action("UserInfoHeader", "Foo")

在哪里&#34; Foo&#34;是你把这个动作放在的控制器。

相关问题