Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我是否可以在整个站点中显示特定于用户的数据,而不添加到每个视图模型_C#_Asp.net Mvc - Fatal编程技术网

C# 我是否可以在整个站点中显示特定于用户的数据,而不添加到每个视图模型

C# 我是否可以在整个站点中显示特定于用户的数据,而不添加到每个视图模型,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个站点(MVC5),其中一个部分是标题。此标题显示用户名及其所代表的组织的徽标 每个页面还具有页面特定数据的ViewModel 是否有任何方法可以在每个页面上从幕后的公共模型/对象渲染此部分,或者我需要将我的“userheader”viewmodel添加到每个页面上的viewmodel?您可以通过ChildActionOnly来完成您的要求,比如- [ChildActionOnly] public ActionResult LoggedIn() { // create your U

我有一个站点(MVC5),其中一个部分是标题。此标题显示用户名及其所代表的组织的徽标

每个页面还具有页面特定数据的ViewModel


是否有任何方法可以在每个页面上从幕后的公共模型/对象渲染此部分,或者我需要将我的“userheader”viewmodel添加到每个页面上的viewmodel?

您可以通过
ChildActionOnly
来完成您的要求,比如-

[ChildActionOnly]
public ActionResult LoggedIn()
{
    // create your User View Model and pass it to Login Partial View
    return PartialView("_LoginPartial", user);
}
现在创建一个带有严格类型模型的局部视图,您将从上面的控制器操作返回该模型

在布局中,您可以获得如下所示的局部视图-

@Html.Action("LoggedIn", "ControllerName")

这样,您就不需要在不同的视图中包含相同的模型。

不是默认的
\u layout.cshtml
的用途吗?如果我这样做,并且(在某些页面上)希望在标题中显示某些页面特定的信息,我如何访问特定页面的ViewBag。或者我需要在每个控制器上使用一种方法来设置标题,并根据需要添加特定于页面的信息吗?如果您使用自己的控制器将标题放在普通视图中,则可以使用
RenderAction()
而不是
Partial()
\u layout.cshtml
中呈现标题。这样,您将在一个控制器中只有初始化代码。谢谢。我已经做到了。但是假设我有两页,我希望在其中显示一些额外的文本。控制器不知道哪个页面调用了它的HeaderInformation方法,所以我如何在这些页面上添加特定的文本?不是吗?使用
RenderAction()
呈现的视图的控制器方法可以有参数,您可以向控制器方法添加
string additionalText
参数(默认为空值),并使其在模型中可用。当然,如果将
RenderAction()
放在共享布局文件中,则需要更多的逻辑来决定何时需要额外的文本。如果您决定在每个视图中重复
RenderAction()
(可能在
@节头中
),则它将直接运行。+1仅适用于ChildAction,我不知道。在使用中不是强制性的,但使用起来相当安全!