asp.net - Razor View 引擎自动应用引号?

标签 asp.net razor

我现在已经习惯了 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=&quot;active&quot;>
    <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/

相关文章:

c# - 如何在 razor foreach 中使用 html 和 escape razor?

c# - SendGrid 不发送电子邮件

c# - 将模型数据从 View 传递到 Controller 并使用其值

c# - ASP C# GridView 从编辑值更新 SQL 数据库

asp.net - 代码隐藏无法引用页面控件

c# - 在 C#/.NET 中,Graphics.MeasureString 方法给出的高度不正确

c# - ASP.Net intellisense 错误地建议路径为 webroot

asp.net - Entity Framework 按枚举值字母顺序排序

asp.net - 在 Windows Server 2016 上使用非管理员用户和 IIS 用户的 WebDeploy 出现 401 Unauthorized 错误

c# - Razor:条件语句中的 <text> 标记引发错误