当我创建一个新的SelectList时,(有时只想一想)看到SelectList.CreateDropDown()
中的defaultValueItemLabel选项。评论说
默认值项的标签(仅当所有列表项都没有具有默认值的ID时才显示)。不要传递空值。如果传递空字符串,则不会显示任何默认值项。
但是我的SelectList是int?
类型,无论如何我都必须将其传递给selectedItemId。那么,这是什么“默认”值呢?如果必须通过所选的值,怎么会有默认值?我可以猜测,当您希望用户能够选择基于可空类型的SelectList的空值时,将使用defaultvalueItemLabel
。但是,如果这是真的,那为什么还要指定placeholderIsValid: true
?现在,我将有两个选项可供用户选择,以允许他们选择null?什么时候有用?
最佳答案
defaultValueItemLabel
中的单词default是指ID数据类型的默认值,对于所有引用类型(例如null
),其默认值为int?
。
您是正确的,defaultValueItemLabel
和placeholderIsValid
都用于添加具有ID类型默认值的项目。但是它们在此项目出现方式上有所不同。使用defaultValueItemLabel
,该项目将看起来很正常。使用placeholderIsValid: true
,该项目将显示为占位符,这意味着它将具有变灰,褪色的外观,而不是看起来像其他项目。而且,一旦选择了另一个项目,就会出现一个X按钮,使用户可以将下拉菜单重置为占位符。
如果同时指定defaultValueItemLabel
和placeholderIsValid: true
,则前者优先,如placeholderIsValid
文档中所述。
关于c# - SelectList的defaultValueItemLabel用于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15735941/