我已经下载并检查了CodePlex的微软MVC源代码。根据源代码,类定义如下:
namespace System.Web.Mvc
{
public class SelectListItem
{
/// <summary>
/// Gets or sets a value that indicates whether this <see cref="SelectListItem"/> is disabled.
/// </summary>
public bool Disabled { get; set; }
/// <summary>
/// Represents the optgroup HTML element this item is wrapped into.
/// In a select list, multiple groups with the same name are supported.
/// They are compared with reference equality.
/// </summary>
public SelectListGroup Group { get; set; }
public bool Selected { get; set; }
public string Text { get; set; }
public string Value { get; set; }
}
}
但是当我写下面的代码时
List<System.Web.Mvc.SelectListItem> statuses = (from s in DataContext.OfferStatuses
select new System.Web.Mvc.SelectListItem
{
Value = s.Id.ToString(),
Text = s.Code,
}).ToList();
在类属性定义中我看不到“已禁用”属性。此外,当我遍历状态集合时,我仍然无法看到该属性。
为什么我看不到公开定义的某些属性?
答案 0 :(得分:1)
当您查看codeplex中的代码时,您正在查看CURRENT代码,即MVC 5.x.你使用的MVC4不是当前的代码,所以你看到的代码不是你正在使用的代码。
实际上,Disabled属性已添加到MVC5中,而不是MVC4的一部分。这就是您无法在MVC4代码中访问它的原因。您可以通过访问codeplex站点并浏览Web查看器中的代码来查看此信息,然后查看以前的版本,您将看到它在先前版本中不存在。
您还可以通过查看MSDN文档中的先前版本来查看:
MVC5文档: http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlistitem(v=vs.118).aspx
MVC4文档 http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlistitem(v=vs.108).aspx