2014-12-20 3 views
1

Я пытаюсь выяснить, определен ли раздел в представлении и использовать, если это так.IsSectionDefined возвращающее значение вывода

Я делаю:

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

Однако это дает обратно значение, например, печать "Правда?" на мой взгляд

я могу сделать это нравится:

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

Однако, я думаю, что выше некрасиво ... и хотел бы сделать это в первый путь ...

Кто знает, как Я могу использовать первый метод, но не печатать значение IsSectionDefined?

ответ

1

Ваш второй подход с if отлично подходит, поэтому вы должны придерживаться его.

Однако, если вы хотите использовать условный оператор, вам нужно внести некоторые изменения. Основная проблема заключается в том, что RenderSection возвращает HelperResult, поэтому другая часть вашего условного номера должна также вернуть HelperResult.

Самый простой способ решить эту проблему, чтобы переместить вид логики в вспомогательную функцию Razor, который будет возвращать HelperResult то, что вы можете использовать в условный оператор:

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

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

Очень интересные спасибо большое! –

Смежные вопросы