Asp.net mvc 循环中的Html.ActionLink会导致<;a>;标签
在razor视图中使用此源代码:Asp.net mvc 循环中的Html.ActionLink会导致<;a>;标签,asp.net-mvc,Asp.net Mvc,在razor视图中使用此源代码: @for( int x = 0; x < 100; x++) { <a href="action">link</a> } @for( int x = 0; x < 100; x++) { @Html.ActionLink("link", "action") } (int x=0;x
@for( int x = 0; x < 100; x++)
{
<a href="action">link</a>
}
@for( int x = 0; x < 100; x++)
{
@Html.ActionLink("link", "action")
}
(int x=0;x<100;x++)的
{
}
@对于(int x=0;x<100;x++)
{
@ActionLink(“link”,“action”)
}
生成两个不同的html块:
第一个循环产生
...
第二个产生一条长链的。。。
在第二种情况下,浏览器不会在链接之间使用任何间距,也不会允许文本在必要时换行,从而创建一条不可断开的长链接线。链接文本中没有空格这一事实起了作用。在我的应用程序中,我真的需要一个单字链接的长列表,它们必须正确包装
在这种情况下,使用Html.ActionLink
的正确方法是什么
我找到了两个解决办法:
包装在
Html.ActionLink
之后使用
。这将强制在生成的源代码中换行从语义的角度来看,您正在创建一组链接,这些链接形成某种导航。您应该在生成的HTML中表达这种语义,因此从语义的角度来看,您所谓的使用
<nav>
<ul>
@for( int x = 0; x < 100; x++)
{
@Html.ActionLink("link", "action")
}
</ul>
</nav>
@对于(int x=0;x<100;x++)
{
@ActionLink(“link”,“action”)
}
如果使用的是(x)HTML 4,则可以考虑使用元素。
最后一点:不要试图用HTML代码表达某种表示。HTML链接的包装是一种表示方式。如果使用语义标记,也可以修复表示,但这不是使用语义标记的原因
链接中演示了如何在IE6中使用HTML 5标记。这将解决此问题:
@for( int x = 0; x < 100; x++)
{
@Html.ActionLink("link", "action")
@:
}
(int x=0;x<100;x++)的
{
@ActionLink(“link”,“action”)
@:
}
我同意你的看法,语义版本“更好”。我说过
是一种变通方法,因为我不是为了添加scemantic而把它放在这里的。我在那里添加了它来修正行为。用
包装它也是一种解决方法。最后,必须使用“技巧”来修复这个Html.ActionLink()行为。这是一件好事,其中一个“技巧”为结果提供了语义。
<nav>
<ul>
@for( int x = 0; x < 100; x++)
{
@Html.ActionLink("link", "action")
}
</ul>
</nav>
@for( int x = 0; x < 100; x++)
{
@Html.ActionLink("link", "action")
@:
}