1

我有一个使用 _Layout.cshtml 文件的 ASP.NET、MVC、C# 应用程序。我想为多个视图使用 _Layout.cshtml 文件,但根据显示的视图,我想稍微更改 _Layout.cshtml。

比如在 _Layout.cshtml 中有类似的东西——

<div>I would like to say </div>

@if(View = "View1")
{
      <div>Hello!</div>
}
@else 
{
      <div>Goodbye!</div>
}
<div>Have a great day!</div>

有人可以告诉我如何做到这一点吗?谢谢!

4

3 回答 3

4

假设您想要更改的不仅仅是简单的文本,您可以使用部分。例如,把它放在_Layout.cshtml

@RenderSection("mySection", required: true)

然后在您的每个视图中:

@section mySection
{
    <div>Hello!</div>
}

这是一个包含更多信息的不错的博客。

于 2012-12-05T22:08:12.107 回答
1

通常你想检查动作而不是视图。你会想做这样的事情

@if(Html.ViewContext.RouteData.Values["Controller"] == "Home" && Html.ViewContext.RouteData.Values["Action"] == "Index") {
     <div>Hello!</div>
}else {
     <div>Goodbye!</div>
}
于 2012-12-05T23:10:22.330 回答
0

巧妙的解决方案:在视图中向 ViewBag 添加一个变量。像这样:

@ViewBag.Foo="bar"

在定义渲染哪个视图之前。并根据它在布局中做一个if。

虽然这不是最佳实践方法——我个人可能会选择不同的布局。

于 2012-12-05T22:05:14.723 回答