Visual Basic中的@ Html.BeginForm语法

Jam*_*ine 4 vb.net asp.net asp.net-mvc

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

我试图将上面的代码翻译成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>
Run Code Online (Sandbox Code Playgroud)

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

当我调试页面时,错误是"BC30201:预期的表达式".在@Using发生的行上.

我究竟做错了什么?

Sam*_*Axe 9

正如@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>
Run Code Online (Sandbox Code Playgroud)

或者您可以使用@<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>
Run Code Online (Sandbox Code Playgroud)