Asp.net SelectedValue vs SelectedItem.DropDownList的值
我正在做一个老项目,多年来由几个人编写并修补。在某些地方,他们使用SelectedValue属性,而在其他地方,他们使用SelectedItem.Value 问题:是否Asp.net SelectedValue vs SelectedItem.DropDownList的值,asp.net,.net,drop-down-menu,Asp.net,.net,Drop Down Menu,我正在做一个老项目,多年来由几个人编写并修补。在某些地方,他们使用SelectedValue属性,而在其他地方,他们使用SelectedItem.Value 问题:是否SelectedValue只是SelectedItem.Value或SelectedValue在引擎盖下的作用不同?哪一个表现更好 Edit:SelectedItem.Text已替换为SelectedItem.Value在DroodDown列表中,有两项添加属性 <asp:Repeater runat="server">
SelectedValue
只是SelectedItem.Value
或SelectedValue
在引擎盖下的作用不同?哪一个表现更好
Edit:SelectedItem.Text已替换为SelectedItem.Value在DroodDown列表中,有两项添加属性
<asp:Repeater runat="server">
<ItemTemplate>
<asp:DropDownList ID="ddlCategories" runat="server"
SelectedValue='<%# Eval("CategoryId")%>'>
</asp:DropDownList>
</ItemTemplate>
</asp:Repeater>
1) 正文
2) 价值观
如果要获取文本属性,请使用selecteditem.text
如果要选择value属性,请使用selectedvalue属性
在您的例子中,value和text属性都是相同的,所以无论您使用selectedvalue还是selecteditem.text
如果两者都不同,那么它们会给我们不同的结果它们都不同
SelectedValue
属性提供所选项目的实际值,而SelectedItem.Text
提供显示文本。例如:您下拉列表可能有一个类似itme的
<asp:ListItem Text="German" Value="de"></asp:ListItem>
因此,在这种情况下,SelectedValue
将是de
,而SelectedItem.Text
将给出“德语”
编辑:
在那种情况下,它们都是一样的。。。原因SelectedValue
将在下拉列表中为当前选定项目提供存储的值,而SelectedItem.value
将为当前选定项目的值
因此,它们都会给出相同的结果。
SelectedValue
返回与SelectedItem.value
相同的值
SelectedItem.Value
和SelectedItem.Text
可能有不同的值,性能不是这里的一个因素,只有这些属性的含义才重要
<asp:DropDownList runat="server" ID="ddlUserTypes">
<asp:ListItem Text="Admins" Value="1" Selected="true" />
<asp:ListItem Text="Users" Value="2"/>
</asp:DropDownList>
SelectedItem看起来像这样:
public virtual ListItem SelectedItem
{
get
{
int selectedIndex = this.SelectedIndex;
if (selectedIndex >= 0)
{
return this.Items[selectedIndex];
}
return null;
}
}
这两个属性之间的一个主要区别是SelectedValue
也有一个setter,因为SelectedItem
没有。编写代码时,SelectedValue
的获取速度更快,执行性能问题没有真正的理由讨论。SelectedValue的另一大优势是在使用绑定表达式时
编辑数据绑定方案(不能使用SelectedItem.Value)
两者之间的一个重要区别(在反映的代码中可见)是,如果选择了nothing,SelectedValue将返回空字符串,而SelectedItem.Value将抛出NullReference异常。使用SelectedItem.Text时要小心。。。
如果未选择任何项目,则SelectedItem将为空,SelectedItem.Text将生成空值异常
.NET应该提供一个SelectedText属性,如SelectedValue属性,当没有选定项时返回String.Empty。感谢您指出我的观点。。我打错了。文本。。事实上,价值无处不在。那么,这两个属性(SelectedItem.Value和SelectedValue)的内部实现是相同的吗?SelectedItem(两点)语法不是比一跳之外的SelectedValue更复杂吗?谢谢Adrian。你能详细介绍一下绑定表达式的优点吗?非常感谢@vulcanraven,欢迎,我用一个数据绑定示例更新了答案我不确定你的“引擎盖下”部分是否正确。我刚刚发现,
SelectedItem
将根据其值而不是索引返回所选项目。这意味着如果有多个项目具有相同的值
,则可能SelectedItem
返回了错误的项目。我使用Reflector查看了它。此注释令人困惑。是的,selectedValue属性和selectedItem。文本可以相同,但通常情况下,它们与上面的示例不同,其中selectedValue为“de”,selectedItem为“德语”,或者selectedValue为“CA”,selectedItem为“California”。最常见的是,SelectedValue是DB主索引值和SelectedItem的字符串表示形式。Text是DB表中同一行的特定列中的值。
<asp:Repeater runat="server">
<ItemTemplate>
<asp:DropDownList ID="ddlCategories" runat="server"
SelectedValue='<%# Eval("CategoryId")%>'>
</asp:DropDownList>
</ItemTemplate>
</asp:Repeater>