相关:MVC3 Razor using Html.BeginForm problem
当我使用Razor引擎制作MVC 3 / VB的HTML表单时,我希望能够这样做:
@Using Html.BeginForm("Action", "Controller")
<fieldset>
@* Other form code and values *@
</fieldset>
End Using
但是,如果我这样做,我得到“BC32035:属性说明符不是一个完整的语句。使用行继续将属性应用于以下语句。”我需要在开始标记之前添加@字符以避免此错误。有人可以解释原因吗?
答案 0 :(得分:3)
我相信Razor beginform应该是这样的,即用花括号:
@using (Html.BeginForm())
{
@* Other code here *@
}
答案 1 :(得分:3)
我不使用VB.NET,但我认为你应该这样做:
@Using Html.BeginForm("Action", "Controller")
@:<fieldset>
@* Other form code and values *@
@:</fieldset>
End Using
借助VB.NET对XML的一流支持,它将标记视为XML,因此它也将字段集(任何HTML标记)视为XML;和XML作为VB.NET语言的一部分,它将与Razor的解析器
背道而驰使用ASP.NET MVC for VB.NET快速浏览VS2010,这就足够了:
@Using Html.BeginForm("Action", "Controller")
@<fieldset>
@* Other form code and values *@
</fieldset>
End Using
VB.NET的语言文字XML支持与Razor的解析器发生冲突,只是通过添加额外的@
或@:
答案 2 :(得分:3)
当使用Razor和C#时,你所描述的是可能的,因为解析器可以确定从代码到标记的转换,因为显式的'&lt;' html中的字符不是有效的C#标记。 VB.NET直接在代码中支持内联XML,因此Razor解析器无法确定您是否已转换回标记,因此您必须更加明确。
答案 3 :(得分:1)
对于多行支持,如Using in Razor VB.net MVC not work as expected所述,您可以使用@<text>...</text>
切换回&#34;文字模式&#34;并输出这样的HTML:
@Using Html.BeginForm("Action", "Controller")
@<text>
<fieldset>
* Other form code and values *
</fieldset>
</text>
End Using