условный раздел синтаксиса с бритвой asp.net mvc3 - PullRequest
0 голосов
/ 25 ноября 2011

Я не очень знаком с двигателем вида бритвы. Итак, у меня проблема с синтаксисом.

У меня есть "_layout.cshtml":

@if (IsSectionDefined("Slideshow"))
{
     @RenderSection("Slideshow");
}
else
{
     <p>blah blah blah</p>
}

А потом в "default.cshtml"

@if(@ViewBag.Article == null)
{
    <p>blabla</p>
}
else
{
    @section Slideshow
    {
        <ul><li>slide here</li></ul>
    }
}

Итак, вот моя проблема: Если я разрешу раздел @ before, у меня будет ошибка [строка: 27], сообщающая, что мне не нужно хранить @ внутри оператора @if:

"Mot clé "section" inattendu après le caractère "@". Une fois à l'intérieur du code,
vous n'avez pas besoin de préfixer des constructions telles que "section" avec "@"."

Если я не позволю разделу @ before, у меня будет ошибка [строка: 29] через 2 строки после (

...), сообщающие мне, что} отсутствует.
CS1513: } attendue

Итак, я думаю, что это возможно, но я не знаю, как это сделать. Не могли бы вы помочь мне, пожалуйста.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

Вы можете сделать это,

 @{
    if(ViewBag.Article == null)
{
    <p>blabla</p>
}
else
{
    section Slideshow
    {
        <ul><li>slide here</li></ul>
    }
}    
    }
0 голосов
/ 25 ноября 2011

это должно скомпилироваться:

@if (IsSectionDefined("Slideshow"))
{
     RenderSection("Slideshow");
}
else
{
    @:<p>blah blah blah</p>
}


@if(ViewBag.Article == null)
{
    @:<p>blabla</p>
}
else
{
    section Slideshow
    {
        @:<ul><li>slide here</li></ul>
    }
}

Вы должны начинать оператор c # с @, только если компилятор не знает, что вы хотите написать реальный код.

Используя @: в начале простого текста, компилятор знает его простой текст.

Использование <text></text> тегов для вложения текста имеет тот же эффект. Каждый оператор c # внутри тега </text> должен начинаться с @

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...