在 asp.net-mvc 中,如何从我的视图模型中为 html.dropdownlistfor 插入一个 class 名称

In asp.net-mvc, How can I insert a class name from my view model for a html.dropdownlistfor

我认为有以下代码:

<%= Html.DropDownListFor(r=>r.Id, Model.MyList, new { @class = "Dropdown hidden" })%>

但现在我只想在某些情况下分配 class "hidden" 所以我想从我的 ViewModel 中传递它以添加 class 或将其保留.

为了解决这个问题,我在名为 HiddenConditional

的视图模型中创建了一个 属性
  public string HiddenConditional
  {
      get
      {
          return IfCondition() ? "hidden" : string.empty;
      }
  }

但我想不出将其放入 class 属性的正确语法。我需要这样的东西:

<%= Html.DropDownListFor(r=>r.Id, Model.MyList, new { @class = "Dropdown <%=Model.HiddenConditional%>" })%>

您需要这样做:

<%= Html.DropDownListFor(r=>r.Id, Model.MyList, 
               new { @class = "Dropdown " + Model.HiddenConditional })%>

您可能与在 ViewModel 中使用 HiddenConditional 的解决方案有关,但我认为最好在 View 中保留 class 名称并在 ViewModel 中简单地使用布尔值.所以它看起来像这样:

ViewModel

public bool MyListIsHidden { get; set; }

查看

<%= Html.DropDownListFor(r=>r.Id, Model.MyList, new { @class = "Dropdown" + (Model.MyListIsHidden ? " hidden" : "") })%>