mvc3 razor代码中的分析器错误

时间:2013-05-22 15:15:33

标签: asp.net-mvc asp.net-mvc-3 razor nerddinner

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

@{      
    var options = new OpenIdSelector();
    options.TextBox.LogOnText = "Log On";
}

分析器错误

  

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

     

分析器错误消息:“@”字符后面出现意外的“{”。一旦进入代码块的主体(@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))*@

    }

1 个答案:

答案 0 :(得分:6)

你已经在

@using (Html.BeginForm())
{

阻止,所以你的

var options = new OpenIdSelector();
options.TextBox.LogOnText = "Log On";

块不必以@{开头。几乎是错误所说的。

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