我现在已经习惯了剃刀,但我不明白为什么以下语法是正确的?
<li @(active ? "class=active" : "")>
@Html.ActionLink(item.Text, item.TargetAction, Model.Controller)
</li>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,我有条件地应用了一个类(我用这种方式编写它,因此如果bool active == false则不生成类标记).
我无法理解的是,为什么这会产生正确的报价给出:
<li class="active"><a href="/">Home</a></li>
<a href="/">Home</a>
</li>
Run Code Online (Sandbox Code Playgroud)
不知何故,它是神奇地整理引用,但我在剃刀的文章中找不到任何参考,以表明这是预期的,所以我想知道它是否依赖于破碎的行为.如果我在单词'active'周围的字符串中添加单引号或双引号,就像你想要的那样,如果你想要html,我最终得到:
<li class="'active'">
<a href="/">Home</a>
</li>
Run Code Online (Sandbox Code Playgroud)
要么
<li class="active">
<a href="/">Home</a>
</li>
Run Code Online (Sandbox Code Playgroud)
为什么它以这种方式工作,并且我的代码是正确的(而不是简单的功能)?
And*_*and 16
刚刚碰到这个想法会回答 - SLaks看起来是正确的Html.Raw,但OP也是正确的,因为第二种方法看起来不起作用 - "s得到编码.
我的解决方案是:
<li@(active ? Html.Raw(" class=\"active\"") : null)>
Run Code Online (Sandbox Code Playgroud)
SLa*_*aks 15
Razor自动HTML转义所有代码输出.
你可以写一下来防止这种情况@Html.Raw(...)
或者,您可以将引号放在文字文本中:
<li class="@(active ? "active" : "")>
Run Code Online (Sandbox Code Playgroud)
您的示例有效,因为您实际上没有任何引号.
生成的HTML源代码读取<li class=active>.
| 归档时间: |
|
| 查看次数: |
10698 次 |
| 最近记录: |