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"没有匹配的开始标签。你的开始/结束标签是否平衡?
我错过了什么吗?
生成的标记如下:
<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>
。