条件部分语法与razor asp.net mvc3

时间:2011-11-25 10:34:41

标签: asp.net asp.net-mvc asp.net-mvc-3 razor

我对剃须刀视图引擎并不熟悉。所以,我有一个语法问题。

我有“_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>
    }
}

所以,这是我的问题: 如果我让@之前的部分,我有一个错误[line: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节之前,我有一个错误[line:29] 2行之后(

  • ...)告诉我a}缺失。

    CS1513: } attendue
    

    所以,我想这是可能的,但我不知道该怎么做。你能帮我吗?

    由于

  • 2 个答案:

    答案 0 :(得分:0)

    这应该编译:

    @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>标记来包含文本具有相同的效果。 </text>标记内的每个c#语句都需要以@

    开头

    答案 1 :(得分:0)

    你可以这样做,

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