我看不到"残疾" System.Web.Mvc.SelectListItem类中的属性

时间:2014-09-04 21:24:34

标签: asp.net-mvc-4 html.dropdownlistfor selectlistitem

我已经下载并检查了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();

在类属性定义中我看不到“已禁用”属性。此外,当我遍历状态集合时,我仍然无法看到该属性。

为什么我看不到公开定义的某些属性?

1 个答案:

答案 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