ASP.NET剃刀三元表达式在匿名类型上

时间:2014-08-06 20:45:36

标签: 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>

但是我收到以下错误:

  

错误CS0173:由于在匿名类型#1和#39和#AnonymousType#2&#39;

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

1 个答案:

答案 0 :(得分:11)

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