【问题标题】:What is SelectList's defaultValueItemLabel used for?SelectList 默认值 ItemLabel 用于什么?
【发布时间】:2013-03-31 23:56:34
【问题描述】:

当我创建一个新的 SelectList 时,我(只是有时想)在SelectList.CreateDropDown() 中看到 defaultValueItemLabel 选项。评论说

默认值项的标签,它将首先出现,并且仅当列表项中没有一个具有默认值的 ID 时才会出现。不要传递空值。如果传递的是空字符串,则不会出现默认值项。

但我的 SelectList 是 int? 类型,无论如何我都必须将 selectedItemId 传递给它。那么它在谈论什么“默认”值?如果我必须传递选定的值,怎么会有默认值?我猜想defaultvalueItemLabel 是在您希望用户能够选择基于可空类型的 SelectList 的空值时使用的。但如果这是真的,那我为什么还要指定placeholderIsValid: true?现在我将有两个用户可以选择的选项允许他们选择 null?什么时候有用?

【问题讨论】:

    标签: c# asp.net web-applications enterprise-web-library


    【解决方案1】:

    defaultValueItemLabel中的default这个词指的是ID数据类型的默认值,对于所有引用类型都是null,比如int?

    defaultValueItemLabelplaceholderIsValid 都用于添加 ID 类型默认值的项目,这是正确的。但是它们在此项目的显示方式上有所不同。使用defaultValueItemLabel,项目看起来正常。使用placeholderIsValid: true,该项目将显示为占位符,这意味着它将具有灰显、褪色的外观,而不是看起来像其他项目。而且,一旦选择了另一个项目,就会出现一个 X 按钮,让用户将下拉菜单重置回占位符。

    如果您同时指定defaultValueItemLabelplaceholderIsValid: true,则前者优先,如placeholderIsValid 文档中所述。

    【讨论】:

      【解决方案2】:

      如果您想要一个额外的选项(例如“Other”),除了让您的所有其他 null 项目可用之外,您还需要指定 placeholderIsValid 标志,并最终将所有这些都解释为“其他”选择。不是很优雅,但可能对某人有用。

      我说,最好提供所有可能的功能,而不是让其中一些功能相互排斥。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-22
        相关资源
        最近更新 更多