我有一个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,它正确设置了下拉列表中的所有值,但它们被禁用而不是启用。
有什么问题?
答案 0 :(得分: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()" } );
}
答案 1 :(得分: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)
答案 2 :(得分: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)