3

当我创建一个新的 SelectList 时,我(有时只是想)在SelectList.CreateDropDown(). 评论说

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

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

4

2 回答 2

3

单词default indefaultValueItemLabel指的是 ID 数据类型的默认值,它null适用于所有引用类型,如int?.

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

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

于 2013-04-01T13:54:27.967 回答
0

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

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

于 2013-04-01T00:26:33.890 回答