【问题标题】:ASP.NET razor ternary expression on anonymous types匿名类型上的 ASP.NET razor 三元表达式
【发布时间】:2014-08-06 20:45:35
【问题描述】:

我有以下代码:

<div class="col-sm-8 col-sm-pad ">
      @Html.DropDownListFor(model => model.SelectedAssignToId, Model.AssignToListItems,
      ViewBag.CanEditRequest ? new { @class = "form-control" } : new { @class = "form-control", @disabled = "disabled" })
</div>

但我收到以下错误:

错误 CS0173:无法确定条件表达式的类型,因为 'AnonymousType#1' 和 'AnonymousType#2' 之间没有隐式转换

如何在 razor 中对匿名类型使用三元表达式?

【问题讨论】:

    标签: asp.net razor anonymous-types ternary


    【解决方案1】:

    您可以将三元表达式的一侧转换为object

    @Html.DropDownListFor(model => model.SelectedAssignToId, Model.AssignToListItems,
    ViewBag.CanEditRequest ? (object)new { @class = "form-control" } : new { @class = "form-control", @disabled = "disabled" })
    

    或者也许尝试将三元表达式移动到匿名类型中,如下所示:

    @Html.DropDownListFor(model => model.SelectedAssignToId, Model.AssignToListItems,
    new { @class = "form-control", @disabled = ViewBag.CanEditRequest ? null : "disabled" })
    

    【讨论】:

    • 我确实尝试过这种方式:@disabled = ViewBag.CanEditRequest? null : "disabled",但是当 CanEditRequest 为 true 时,它​​仍然在 select 元素中呈现 disabled=""。
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2023-03-19
    相关资源
    最近更新 更多