0

我有一个 MVC3 应用程序,我定义了一个可以传递值和设置 SelectedItem 值的视图。

List<SelectListItem> items = new SelectList(db.BILLING_COUNTRY, "ISO_Code_BillingCountry", "CountryName", Country).AsParallel().ToList();
        items.Insert(0, (new SelectListItem { Text = "Select Your Country", Value = "0" }));
        ViewBag.Countries = items;

如果 ViewBag.EnableDropDowns 为 false 或未设置,我将在下拉列表中设置 disabled = "disabled" 属性。

@{ object displayMode = (ViewBag.EnableDropDowns) ? null : new { disabled = "disabled"     };
           @Html.DropDownList("Countries", null, new { disabled = displayMode, onchange     = "LoadItems()" } )
        }

我将 ViewBag.EnableDropDowns 设置为 true,它正确设置了下拉列表中的所有值,但它们被禁用而不是启用。

怎么了?

4

3 回答 3

0

我认为你需要设置enabled="enabled"

尝试:

    @{
        bool displayMode = (ViewBag.EnableDropDowns) ? "enabled": "disabled";                     
     };

   @if(displayMode)
   {
     Html.DropDownList("Countries", null, 
      new { enabled= displayMode, onchange="LoadItems()" } );
   }
   else
   {
      Html.DropDownList("Countries", null, 
      new { disabled= displayMode, onchange="LoadItems()" } );
   }
于 2012-09-24T23:15:59.883 回答
0

如果该属性完全存在(无论其值如何),则该select元素将被禁用。disabled所以你需要这样的东西(指定htmlAttributes为字典而不是匿名对象,因为在这种情况下看起来更方便):

@{ 
    var displayMode = new Dictionary<string,object>();
    displayMode.Add("onchange", "LoadItems()");
    if (ViewBag.EnableDropDowns) displayMode.Add("disabled", "disabled");
}

@Html.DropDownList("Countries", null, displayMode)
于 2012-09-24T23:19:00.947 回答
0

小心字典声明。必须是这样,Dictionary<string, object>()否则您将面临运行时问题。

我必须根据条件禁用列表框。

@{
var sourceListOptions = new Dictionary<string, object>();
sourceListOptions.Add("style", "Height: 250px; width: 225px;");
if (Model.SourceColumns.Count() == Model.ImportMappings.Count())
{
    sourceListOptions.Add("disabled", "disabled");
}

}

@Html.ListBox("SourceColumns", Model.SourceColumns, sourceListOptions)

或者

@Html.DropDownList("SourceColumns", Model.SourceColumns, sourceListOptions)
于 2012-09-25T19:39:14.607 回答