我现在已经习惯了 razor,但我不明白为什么下面的语法是正确的?
<li @(active ? "class=active" : "")>
@Html.ActionLink(item.Text, item.TargetAction, Model.Controller)
</li>
正如你所看到的,我有条件地应用一个类(并且我已经这样编写了它,因此如果 bool active == false 则不会生成类标记)。
我不明白的是为什么这会生成正确的引号:
<li class="active"><a href="/">Home</a></li>
<a href="/">Home</a>
</li>
不知何故,它神奇地整理了引用,但我在 razor 的文章中找不到任何引用资料来表明这是预期的,所以我想知道它是否依赖于损坏的行为。如果我在“active”一词周围的字符串中添加单引号或双引号,正如您在生成 html 时所期望的那样,我最终会得到:
<li class="'active'">
<a href="/">Home</a>
</li>
或
<li class="active">
<a href="/">Home</a>
</li>
为什么会这样工作,我的代码是否正确(而不是简单地运行)?
最佳答案
刚刚遇到这个问题,所以我想会回答 - SLaks 看起来与 Html.Raw 正确,但 OP 也是正确的,因为第二种方法看起来不起作用 - “s 被编码。
我的解决方案是:
<li@(active ? Html.Raw(" class=\"active\"") : null)>
关于asp.net - Razor View 引擎自动应用引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234467/