什么是SelectList的defaultValueItemLabel用于?

时间:2013-03-31 23:56:35

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

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

  

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

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

2 个答案:

答案 0 :(得分:3)

defaultValueItemLabel中的默认一词是指ID数据类型的默认值,对于所有引用类型,null都是int?。{ / p>

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

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

答案 1 :(得分:0)

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

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