0

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

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

为什么我看不到一些定义为公共的属性?

4

1 回答 1

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

于 2014-09-04T21:43:10.820 回答