Visual Basic中的@ Html.BeginForm语法

时间:2016-01-14 22:06:06

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

我正在使用ASP.NET MVC 5和Visual Studio Express 2013.我在C#项目中使用了这个小表单:

<body>
    @using (Html.BeginForm())
    {
        <p>Your name: @Html.TextBoxFor(x => x.Name) </p>
        <p>Your email: @Html.TextBoxFor(x => x.Email) </p>
        <p>Your phone: @Html.TextBoxFor(x => x.Phone) </p>
    }
</body>

我尝试将上面的代码翻译成VB.NET,如下所示:

<body>
    @Using Html.BeginForm()
        <p>Your name: @Html.TextBoxFor(Function(m), m.Name)</p>
        <p>Your email: @Html.TextBoxFor(Function(m), m.Email)</p>
        <p>Your phone: @Html.TextBoxFor(Function(m), m.phone)</p>
    End Using
</body>

我在每个“P”元素的“你的”下面都有蓝线。当我将鼠标悬停在蓝线上时的提示帮助是'属性说明符不是一个完整的语句。使用行继续将属性应用于以下语句。'。

当我调试页面时,错误是'BC30201:表达式预期'。在@Using发生的那一行。

我做错了什么?

1 个答案:

答案 0 :(得分:7)

正如@rogerdeuce推测的那样,您不需要第二个@符号。

@用于将上下文从VB代码切换为HTML /文本。

所以正确的代码如下:

<body>
    @Using Html.BeginForm()
        @<p>Your name: @Html.TextBoxFor(Function(m) m.Name)</p>
        @<p>Your email: @Html.TextBoxFor(Function(m) m.Email)</p>
        @<p>Your phone: @Html.TextBoxFor(Function(m) m.phone)</p>
    End Using
</body>

或者您可以使用@<text>快捷方式:

<body>
    @Using Html.BeginForm()
        @<text>
        <p>Your name: @Html.TextBoxFor(Function(m) m.Name)</p>
        <p>Your email: @Html.TextBoxFor(Function(m) m.Email)</p>
        <p>Your phone: @Html.TextBoxFor(Function(m) m.phone)</p>
        </text>
    End Using
</body>