某些标记语法破坏了剃刀解析

时间:2018-06-05 08:24:23

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

以下片段打破了剃刀解析和智能感知,U不知道为什么它没有工作(是的,我确实找到了解决办法,但它仍然让我感到烦恼)。

<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>

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

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

这是intellisense打破行动:

image image 附:它仍然与标记帮助器的大括号打破:

image

1 个答案:

答案 0 :(得分:0)

Razor仅在标记中包含在引号内并分配给HTML属性时才有效。换句话说,类似下面的内容应该有效:

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

这看起来似乎不起作用,因为完全指定disabled会导致字段被禁用,但Razor足够聪明,如果属性为false则删除该属性。