我可以在@ Using.BegingForm()中渲染@Section吗?

时间:2012-06-20 16:49:28

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

我正在尝试在VB.NET MVC3中的表单中呈现自定义部分?该部分在主布局中,并且是默认的 - 但是在特定视图中创建自定义的部分

当我尝试

@Using Html.BeginForm()
..my markup
   @Section footerMenu
      ..custom footer markup
   End Section
End Using

编辑: 该部分在我的_Layout.vbhtml

中进行了描述
<div id="footer">      
    @If (IsSectionDefined("footerMenu")) Then
        @RenderSection("footerMenu")    
    Else
    ...default markup    
    End If
</div>

我收到此错误:

  

“@”字符后面的意外“Section”关键字。一旦进入代码内部,您就不需要使用“@”为“Section”构造前缀。

当然删除“@”会导致另一个错误:

  

编译器错误消息:BC30451:未声明“Section”。由于其保护级别,它可能无法访问。

这可能吗?

2 个答案:

答案 0 :(得分:3)

您在其他地方定义section并在表单中呈现它们。你在这里做的是在表单中定义 section导致错误。

你需要创建一个自定义的(基本上保持简单)

所以你需要的是这样的东西:

@Using Html.BeginForm()
..my markup
   @RenderSection("footerMenuCustom") 
End Using

其他地方(可以是局部视图)

@Section footerMenuCustom 
... Markup...
End Section

答案 1 :(得分:1)

在“布局”页面中,指定isRequired值为false。因此,即使您不提供某些详细信息页面中的内容,它也不会引发错误

@RenderSection("footerMenu",false)