在代码中声明部分

时间:2012-03-09 14:56:12

标签: asp.net-mvc-3 razor

尝试在If条件中创建代码部分抛出错误: “@”字符后面的意外“section”关键字。一旦进入内部代码,您就不需要使用“@”作为“section”的结构前缀。

Example 1:Create section when needed
@If bIsMobile = True Then
@section PageFooter
    <div data-role="navbar">
        <ul>
            <li><a href="#">Add</a></li>
            <li><a href="#">Edit</a></li>
            <li><a href="#">Delete</a></li>
            <li><a href="#">Search</a></li>
            <li><a href="#">Refresh</a></li>
        </ul>
    </div>
End Section
End If

显然我们可以在区域内移动条件,但这会强制处理空区块:

Example 2:Creates empty section
@section PageFooter
@If bIsMobile = True Then
    <div data-role="navbar">
        <ul>
            <li><a href="#">Add</a></li>
            <li><a href="#">Edit</a></li>
            <li><a href="#">Delete</a></li>
            <li><a href="#">Search</a></li>
            <li><a href="#">Refresh</a></li>
        </ul>
    </div>
End If
End Section

我们如何实施示例#1

2 个答案:

答案 0 :(得分:1)

@section块只能出现在标记上下文中。感谢SLacks获得此答案。

@If bIsMobile = True Then
<text>
   @section PageFooter
     <div data-role="navbar">
        <ul>
            <li><a href="#">Add</a></li>
            <li><a href="#">Edit</a></li>
            <li><a href="#">Delete</a></li>
            <li><a href="#">Search</a></li>
            <li><a href="#">Refresh</a></li>
        </ul>
     </div>
   End Section
</text>
End If

并在_Layout页面中检查是否为非移动页面定义了部分。否则,它将抛出一个异常,指出未定义“PageFooter”部分。

<footer>
  @If IsSectionDefined("PageFooter") Then
      RenderSection("PageFooter")
  End If
</footer>

答案 1 :(得分:0)

您提供的第二个示例是正确的。

据我所知,你不能指定剃刀引擎在条件或循环块中包含一个部分。