【问题标题】:Certain markup syntax breaking razor parsing某些标记语法破坏剃刀解析
【发布时间】:2018-06-05 08:24:22
【问题描述】:

下面的 sn-p 打破了剃刀解析和智能感知,你不知道为什么它不起作用(是的,我确实找到了解决方法,但它仍然困扰着我)。

<select class="form-control" @(ViewBag.View ? "disabled" : string.Empty) asp-for="repetitiveness" asp-items="Html.GetEnumSelectList<TaskRepetitiveness>()">
    @if (ViewBag.View)
    {
        <option selected="selected" value="">@(EnumHelper<TaskRepetitiveness>.GetDisplayValue(Model.repetitiveness))</option>
    }
</select>

disabled case 评估正常,但空字符串 case 似乎有问题(以下是使用浏览器测试后的输出):

<select class="form-control" asp-for="repetitiveness" asp-items="Html.GetEnumSelectList<TaskRepetitiveness>()"></select>

这是智能感知在行动:

附:它仍然打破了标签助手的大括号:

【问题讨论】:

  • asp-items 的值不在括号内...@(Html.GetEnumSelectList ...)
  • 没有区别,在同一个元素之后仍然会破坏任何剃须刀,这是另一张图片来证明这一点,也破坏了输出imgur.com/TuJtzhE
  • 你试过不使用string.Empty吗?请改用""

标签: asp.net asp.net-mvc razor asp.net-core


【解决方案1】:

仅当用引号括起来并分配给 HTML 属性时,Razor 在标签内才有效。换句话说,应该像下面这样工作:

<select  class="form-control" disabled="@(ViewBag.View as bool? ?? false)" asp-for="repetitiveness" asp-items="Html.GetEnumSelectList<TaskRepetitiveness>()">

这似乎不起作用,因为完全指定 disabled 会导致该字段被禁用,但 Razor 足够聪明,可以在该属性为 false 时删除该属性。

【讨论】:

  • 我想说 html 不检查布尔属性值,但你应该为这部分获得奖牌“如果属性为假,Razor 足够聪明,可以删除属性。”
猜你喜欢
  • 2015-10-25
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
相关资源
最近更新 更多