我有一个在我的项目中填充DropDownList的方法,我想在这个DropDownList中显示Color中的一些记录。为了使一些项目成为彩色,我想在将这些项目从Controller返回到View之前,将Class或其他样式属性添加到特定项目。但不幸的是,虽然属性似乎被添加到某些项目,颜色或这些项目的样式属性不能在视图中@ Html.DropDownListFor观察和填充后检查的DropDownList的时候,有没有这样的一种属性既不选择选项标签。您能否看看下面的代码并告诉我如何在不使用JQuery或其他技术的情况下解决问题?提前谢谢。
控制器:
private void PopulateMeetingsDropDownList(object selectedMeetings = null)
{
var meetingsQuery = repository.Meetings
.Join(repository.Cities, m => m.MeetingCityId, c => c.CityID,
(m, c) => new
{
CityID = c.CityID,
CityName = c.CityName,
MeetingDate = m.MeetingStartDate
}
)
.OrderBy(x => x.CityID)
.AsEnumerable()
.Select(
i => new
{
CityID = i.CityID,
DisplayValue = string.Format(
"{0} ({1:dd MMMM yyyy})",
i.CityName, i.MeetingDate),
Expired = i.MeetingDate < DateTime.UtcNow
}
).ToList();
//Here is the code for check and add Styling Attributes
var selectItems = new List<System.Web.UI.WebControls.ListItem>(meetingsQuery.Count);
foreach (var record in meetingsQuery)
{
var item = new System.Web.UI.WebControls.ListItem
{
Text = record.DisplayValue,
Value = record.CityID.ToString()
};
if (record.Expired)
{
item.Attributes.Add("class", "disabled");
//item.Attributes.Add("style", "color:#4cff00");
}
selectItems.Add(item);
}
ViewData["MeetingId"] = new SelectList(selectItems, "Value", "Text", selectedMeetings);
}
查看:
@Html.DropDownListFor(m => m.MeetingId, ViewData["MeetingId"] as SelectList,"Select",
new { name = "meetingId", id = "meetingId"})
正如在 this 屏幕截图中看到的那样,“class”属性及其值“disabled”从Controller返回,但它们似乎不在View的Dropdown属性上。
注意:将此属性添加到Firebug上的Option或Select标记时,它可以正常运行。因此,css类或此属性没有问题。