VB.NET中的Razor View引擎怪癖

She*_*els 22 vb.net asp.net-mvc visual-studio-2010 razor

我刚刚下载了MVC 3.0 RC,我很高兴开始使用它,尤其是Razor视图引擎.然而,由于在这里的泥类型中有一些人,我们坚持使用VB.NET而不是C#.

当我开始尝试时,我注意到了一些怪癖.如果您使用CSHTML创建Razor视图,则可以编写如下代码:

@foreach(string genreName in Model.Genres)
{
    <li>@genreName</li>
}
Run Code Online (Sandbox Code Playgroud)

Razor会自动检测到<li>文本是HTML标记,并将切换出"代码模式".使用VB.NET VBHTML文件,这似乎不起作用.它让我把@:关键字放在每一行的前面,如下所示:

@For Each genreName As String In Model.Genres
    @:<li>@genreName</li>
Next
Run Code Online (Sandbox Code Playgroud)

如果我没有它,我会收到运行时错误.此外,<text></text>标签似乎不起作用.

有人知道这里发生了什么,或者是否有解决方法?

Bui*_*ted 16

我想说在Vb.net中需要的原因是vb允许xml元素内联,而c#不允许.

Dim xmlMarkup = <someElement>Values</span>
Run Code Online (Sandbox Code Playgroud)

因此,vb的自然解析器必须与c#的行为不同,所以你必须告诉解析器通过使用它来转义回html @.你可以使用@@:.

  • 这似乎可以解释它.我猜这是可以理解的,但它使得VB模板比C#更不优雅.那好吧. (5认同)