3

你如何做到这一点?该视图是自动生成的。例如,当我手动添加视图时:其中包含 Index.cshtml 文件的联系人视图。

我可以通过编写控制器联系人来修改此视图。

    public class ContactController : Controller
{
    public ActionResult Index()
    {
        @ViewBag.Test = "this text will be used in my Contact View";

        return View();
    }
}

所以在我的联系人视图中我可以这样做

<p> @Viewbag.Test </p>

并且将显示文本。但是,您如何在我的共享视图中为我的 _Layout.cshtml 文件实现这一点?我通过添加 SharedController 尝试了同样的方法,但没有以这种方式工作

4

2 回答 2

2

_Layout.cshtml 不能有控制器。该文件用于任何视图的布局。例如,查看 Views 文件夹中的 _ViewStart.cshtml 文件:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

这基本上告诉所有控制器使用该布局作为控制器操作返回的视图的包装器。

您的 _Layout.cshtml 文件已经提示了一种使用值填充它的方法:

<head>
    ...
    <title>@ViewBag.Title</title>
    ...
</head>

如果您在视图中执行以下操作,它将在 _Layout.cshtml 文件的 head/title 部分中呈现:

@{
    @ViewBag.Title = "Home";
}
于 2013-01-04T16:34:38.073 回答
1

_Layout 不需要控制器。您的联系人视图被添加到 _Layout 以创建一个完整的视图。因此,您也可以在 _Layout 中使用联系人控制器中的任何 ViewBag 属性。_Layout 可以访问与您的联系人视图相同的变量。

具体来说,在您的示例中:

public class ContactController : Controller
{
    public ActionResult Index()
    {
        @ViewBag.Test = "this text will be used in my Contact View";

        return View();
    }
}

ViewBag.Test 也可以在 _Layout 中访问,就像在您的联系人视图中一样。

于 2013-01-04T16:40:44.667 回答