mvc3 razor代码中的分析器错误

gs1*_*111 0 asp.net-mvc nerddinner razor asp.net-mvc-3

我在此代码附近的cshtml文件中收到此错误

@{      
    var options = new OpenIdSelector();
    options.TextBox.LogOnText = "Log On";
}
Run Code Online (Sandbox Code Playgroud)

分析器错误

说明:解析为此请求提供服务所需的资源时发生错误.请查看以下特定的解析错误详细信息并相应地修改源文件.

分析器错误消息:"@"字符后面出现意外的"{".一旦进入代码块的主体(@if {},@ {}等),您就不需要使用"@ {"来切换到代码.


@using DotNetOpenAuth.Mvc
@using DotNetOpenAuth.OpenId.RelyingParty
@{ 
 ViewBag.Title = "Log On"; 
}
<div id="login-oauth">
        <h3>via 3rd Party (recommended)</h3>

        @{ Html.RenderPartial("LogOnContent");}


    </div>
    <div id="or">OR</div>
    <div id="login-account">
        <h3>using a account</h3>
         </div>
    @using (Html.BeginForm())
    {
        <div>
            <p>
                <label for="username">Username:</label>
                @(Html.TextBox("username"))
                @(Html.ValidationMessage("username", "*"))
            </p>
            <p>
                <label for="password">Password:</label>
                @(Html.Password("password"))
                @(Html.ValidationMessage("password", "*"))
            </p>
            <p>
                @(Html.CheckBox("rememberMe")) <label class="inline" for="rememberMe">Remember me?</label>
            </p>
            <p>
                <input class="classiclogon" type="submit" value="Log On" />
            </p>
            <p>
                Please enter your username and password. @(Html.ActionLink("Register", "Register")) if you don't have an account.
            </p>
        </div>



 @{     
     {
            var options = new OpenIdSelector();
            options.TextBox.LogOnText = "Log On";
}
        }
       @MvcHtmlString.Create(Html.OpenIdSelectorScripts(options, null))
   @* @(Html.OpenIdSelectorScripts(this.Page, options, null))*@

    }
Run Code Online (Sandbox Code Playgroud)

Cod*_*ter 6

你已经在

@using (Html.BeginForm())
{
Run Code Online (Sandbox Code Playgroud)

块,所以你的

var options = new OpenIdSelector();
options.TextBox.LogOnText = "Log On";
Run Code Online (Sandbox Code Playgroud)

块不一定要开头@{.几乎是错误所说的.

您也可以将这两行移动到您设置的顶部的代码块ViewBag.Title,以尽可能地保护HTML免受代码攻击.