关于ul li标签上的c#的解析错误

时间:2014-07-03 15:31:57

标签: c# asp.net-mvc

我正在尝试使用此代码进行登录下拉列表:

<ul>
<li class="mega-menu mega-menu-custom reserved2">
        <a href="/main/login">Access</a>
        @if (Request.IsAuthenticated) { 
        <ul>
            <li>
                <a>Login</a>
                <ul>
                    @using (Html.BeginForm("Login", "Main", FormMethod.Post))
                    {
                        <li><a class="custom-a-menu">Email</a></li>
                        <li>@Html.TextBoxFor(a => a.Email, null, new { @class = "custom-input" })</li>
                        <li><a class="custom-a-menu">Password</a></li>
                        <li>@Html.PasswordFor(a => a.Password, new { @class = "custom-input" })</li>
                        <li><a href="#" class="custom-a-menu">¿Forgot password?</a></li>
                        <li><button type="submit" class="button primary custom-btn">Iniciar</button></li>
                    }
                </ul>
            </li>
            <li>
                <a>Registrarse</a>
                <ul>
                    <li><a class="custom-a-menu">¿Interested in our services?</a></li></br>
                    <li><a href="/main/register" class="button green custom-btn2">¡Register Now!</a></li>
                </ul>
            </li>

        </ul>
        }
    </li>
</ul>

但是当它总是在}

后面的ul结尾处给我一个解析错误

我正在尝试在用户通过身份验证时隐藏注册表和登录表单,但我还没有添加其他部分,我已经陷入困境。

错误是:

分析程序错误消息:遇到结束标记“ul”,没有匹配的开始标记。您的开始/结束标签是否正确平衡?

我在这里遗漏了什么吗?

4 个答案:

答案 0 :(得分:2)

你在那里会产生如下所示的标记:

<ul>
    <form>
        <li>email:</li>
        ...
    </form>
</ul>

表格是ul的第一个孩子,ul的孩子应该是li。

将ul放在@using (Html.BeginForm("Login", "Main", FormMethod.Post))内,即:

@using (Html.BeginForm("Login", "Main", FormMethod.Post)){
   <ul>
      <li>...

另外,正如其他人指出你的代码中有</br>。它应该是<br/>

答案 1 :(得分:1)

此错误的原因是此行末尾的</br>

<li><a class="custom-a-menu">¿Interested in our services?</a></li></br> \

如果删除它,错误将消失。在您修复@using位置之前,您仍会使用无效的HTML,例如Rui的答案显示,但错误将不再发生。

.Net(特别是.Net中的MVC)不喜欢无效的HTML。无效的HTML会导致视图呈现引擎出现各种问题,例如此。

答案 2 :(得分:1)

这里的直接问题是在“对我们的服务感兴趣”之后的换行,更改

</br>

<br/> 

并且您的代码将编译,但还有其他问题正如其他人所指出的那样。

答案 3 :(得分:1)

当我将此代码发布到VS中时,我在</br>上收到错误...它不喜欢该语法(并且它无论如何都不是HTML)。请改用<br/>

此外,我不确定为什么</br>首先存在... <li>元素是块级别。使用CSS样式创建间隙,而不是<br>