c#对ul标签的解析错误

本文关键字:错误 标签 ul | 更新日期: 2023-09-27 18:11:23

我想用这个代码做一个下拉登录:

<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"没有匹配的开始标签。你的开始/结束标签是否平衡?

我错过了什么吗?

c#对ul标签的解析错误

生成的标记如下:

<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/>

导致此错误的原因是本行末尾的</br>:

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

如果你删除它,错误就会消失。在您修复@using位置之前,您仍然会有无效的HTML,就像Rui的答案所显示的那样,但错误将不再发生。

。.Net(尤其是。Net中的MVC)不喜欢无效的HTML。无效的HTML将导致视图呈现引擎出现各种问题,例如:

这里的直接问题是"Interested in our services"之后的换行,更改

</br>

<br/> 

和您的代码可以编译,但是其他人指出了其他问题。

当我将此代码发布到VS时,我在</br>上得到一个错误…它不喜欢这种语法(而且它不是有效的HTML)。用<br/>代替。

此外,我不确定为什么</br>首先在那里…<li>元素是块级的。使用CSS样式来创建空格,而不是使用<br>