我正在尝试使用此代码进行登录下拉列表:
<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”,没有匹配的开始标记。您的开始/结束标签是否正确平衡?
我在这里遗漏了什么吗?
答案 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>
。