我有一个类似于我的布局标题的要求我必须显示LocationName,UserRole和UserName,除了我们有一些常用的属性,它们将在内部使用来根据请求执行一些逻辑。
为了实现这一点,我创建了一个baseModel
{{1}}
情景1:
我想在成功登录时使用值填充此BaseModel,因此在每个请求中,值应该保持不变,并且我可以使用相同的值。
场景2: 每当我们在任何控制器上从客户端获得任何命中时,基本模型的值都不会被冲走。
事实是我不想使用TempData和ViewBag。因此,我正在寻找一些像这样的替代解决方案" BaseModel"类。
任何建议都会非常值得注意!!!
答案 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;是你把这个动作放在的控制器。