ASP.NET DropDownList / HTML select list 默认选择

3
在我的ASP.NET页面中,我在代码后台将各种项目/选项加载到DropDownList中,但我没有通过分配SelectedIndex来设置默认值。我注意到,在PostBack中,即使我从未将焦点设置为或更改了DropDownList中的值,SelectedIndex也会被设置为0。
如果在代码后台或标记中未另行指定,那么在带有DropDownList的PostBack中是否会使用默认值0作为SelectedIndex?如果是这样,那么这是否是选择列表的HTML标准的一部分,还是仅适用于ASP.NET的实现方式?
2个回答

6

这是HTML SELECT 控件的正常行为。

除非使用了selected属性,否则它始终会从第一个项目(索引为0)开始。

在许多情况下,在ASP.NET中我不希望出现这种情况,因为我特别希望用户选择一个选项。

所以我会添加一个空白项,然后进行验证。

例如:

<asp:DropDownList runat="server" DataSourceID="SomeDS" AppendDataBoundItems="true"> // Notice the last property
    <asp:ListItem Text="Please select an option" Value="" />
</asp:DropDownList>

这样,我可以设置一个验证器来检查值是否为空,强制用户进行选择。


2

如果有人想要在代码后台这样做,可以使用Insert函数并将Index指定为0,在此SO问题中提到。只需确保在调用DataBind()之后这样做。

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接