IsSectionDefined返回输出值

时间:2014-12-20 17:52:18

标签: c# asp.net-mvc razor

我试图查看是否在视图中定义了一个部分,如果是,则使用它。

我在做:

@IsSectionDefined("title") ? RenderSection("title",true) : <title>@Viewbag.Title</title>

然而,这是回馈价值,例如印刷&#34; True?&#34;在我看来

我可以这样做:

@if(IsSectionDefined("title"))
{
   RenderSection("title",true)
}
else
{
   <title>@ViewBag.Title</title>
}

但是,我觉得上面的内容很丑陋......并希望第一种方式......

任何人都知道如何使用第一种方法但不打印IsSectionDefined的价值?

1 个答案:

答案 0 :(得分:1)

你使用if的第二种方法非常好,所以你应该坚持下去。

但是,如果要使用条件运算符,则必须进行一些调整。 主要问题是RenderSection会返回HelperResult,因此条件的其他部分也必须返回HelperResult

解决此问题的最简单方法是将视图逻辑移动到Razor辅助函数中,该函数将返回条件运算符中可以使用的HelperResult

@helper DisplayTitle()
{
    <title>@ViewBag.Title</title>
}

@(IsSectionDefined("title") ? RenderSection("title",true) : DisplayTitle())