匿名类型的 ASP.NET razor 三元表达式

标签 asp.net razor anonymous-types ternary

我有以下代码:

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

但我收到以下错误:

error CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between 'AnonymousType#1' and 'AnonymousType#2'



如何在 Razor 中的匿名类型上使用三元表达式?

最佳答案

您可以将三元表达式的一侧转换为 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" })

关于匿名类型的 ASP.NET razor 三元表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25169871/

相关文章:

c# - 当数据类型已知时使用 var 关键字

c# - 使用 IHttpActionResult 时如何设置自定义 header ?

c# - 为什么HttpContext.AcceptWebSocketRequest函数获取实例会报错?

asp.net-mvc - Razor 是否支持 lambda 表达式?

asp.net - 使用三元运算符在Razor中输出包含空格的字符串

C# 匿名值类型本质

c# - 帮助将字符串日期转换为 DateTime

c# - 使用 int 键时输入字符串的格式错误

asp.net-mvc - MVC 3 上的动态标题和侧面菜单

C# 匿名类型 foreach 循环,更好的方法吗?