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

ASP.NET在匿名类型上的三元表达式,asp.net,razor,anonymous-types,ternary,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 = "d

我有以下代码:

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

@Html.DropDownListFor(model=>model.SelectedAssignToId,model.assigntolistems,
ViewBag.CanEditRequest?新建{@class=“表单控制”}:新建{@class=“表单控制”,@disabled=“disabled”})
但我收到以下错误:

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


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

您可以将三元表达式的一侧强制转换为
对象

@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=”“。