如何获得没有布局MVC标题的ViewBag.Title

时间:2016-10-13 17:09:02

标签: c# asp.net-mvc razor

我已将布局中的标题设置为: -

@ViewBag.Title | Web Clubbed

我的Index.html将Viewbag.Title改为: -

@{
  ViewBag.Title = "Welcome to webclubbed web developement & online marketing"; 
}

现在我在Index.cshtml中的标题显示如下: - 欢迎来到webclubbed web developement&在线营销|网络俱乐部

但我想从Index.cshtml中的标题中删除“| Web Clubbed”。我怎么能这样做?

请帮助!!

3 个答案:

答案 0 :(得分:0)

使用另一个viewbag值来存储后缀的显示/隐藏。

布局:

@{
  var suffix = " | Web Clubbed";
  var hideSuffix = ViewBag.HideSuffix as bool?;
  if (hideSuffix.HasValue && hideSuffix.Value){
    suffix = string.Empty;
  }
}

@ViewBag.Title @suffix

指数:

@{
  ViewBag.Title = "Welcome to webclubbed web developement & online marketing"; 
  ViewBag.HideSuffix = true;
}

如果需要隐藏后缀,则只需设置ViewBag值。

答案 1 :(得分:0)

您可以使用部分来执行此操作。

在你的_Layout页面中:

<head>
    @if(isSectionDefined("TitleSection"))
    {
        RenderSection("TitleSection", false);
        //Setting required to false
    }
    else
    {
        <title>ViewBag.Title | Web Clubbed</title>
    }
</head>

在您的索引页面中:

@section TitleSection {
<title>ViewBag.Title</title>
}

答案 2 :(得分:0)

您可以通过将RouteData值与视图进行比较来实现此目的。

因此,在您的_Layout页面中,您可以像这样执行条件语句:

@ViewBag.Title = "Welcome to webclubbed web developement & online marketing";

@if(ViewContext.RouteData.Values["action"].ToString() == "Index")
{
    ViewBag.Title
}
else
{
    ViewBag.Title <span>|</span> Web Clubbed
}

现在,根据您拥有的Index次操作数量,您可能需要使该条件语句更具体一些..

@if(ViewContext.RouteData.Values["action"].ToString() == "Index" && ViewContext.RouteData.Values["controller"].ToString() == "/*ControllerNameThatIndexIsIn*/")

请告诉我这是否有帮助!