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


  默认值项的标签(仅当所有列表项都没有具有默认值的ID时才显示)。不要传递空值。如果传递空字符串,则不会显示任何默认值项。


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

最佳答案

defaultValueItemLabel中的单词default是指ID数据类型的默认值,对于所有引用类型(例如null),其默认值为int?

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

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

关于c# - SelectList的defaultValueItemLabel用于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15735941/

10-11 16:57