当我创建一个新的SelectList时,我(有时只考虑)看到SelectList.CreateDropDown()
中的defaultValueItemLabel选项。评论说
默认值项的标签,它将首先出现,并且仅当列表项中没有一个具有默认值的ID时。不要传递null。如果传递空字符串,则不会显示默认值项。
但我的SelectList类型为int?
,我必须将它传递给selectedItemId。那么它所说的“默认”价值是什么?如果我必须传递所选值,怎么会有一个默认值?我猜想当用户希望能够选择基于可空类型的SelectList的空值时,会使用defaultvalueItemLabel
。但如果这是真的,那我为什么还要指定placeholderIsValid: true
?现在我将有两个用户可以选择的选项,允许他们选择null?什么时候有用?
答案 0 :(得分:3)
defaultValueItemLabel
中的默认一词是指ID数据类型的默认值,对于所有引用类型,null
都是int?
。{ / p>
您是正确的defaultValueItemLabel
和placeholderIsValid
都用于添加具有ID类型默认值的项目。但它们在此项目出现的方式上有所不同。使用defaultValueItemLabel
,该项目看起来很正常。使用placeholderIsValid: true
时,该项目将显示为占位符,这意味着它将显示为灰色,褪色的外观,而不是像其他项目一样。而且,只要选择了另一个项目,就会出现一个X按钮,让用户将下拉菜单重置回占位符。
如果同时指定defaultValueItemLabel
和placeholderIsValid: true
,则前者优先,如placeholderIsValid
文档中所述。
答案 1 :(得分:0)
如果您想要一个额外的选项,例如“其他”,除了让所有其他空项可用之外,您还需要将所有这些选项解释为仅仅是一个“其他”,您可以指定placeholderIsValid标志。其他“选择。不是很优雅,但可能对某人有用。
最好提供所有可能的功能,而不是让它的一些相互排斥,我说。