我正在編寫一箇舊項目,然後多年來由幾個人修補。在某些地方,他們使用了SelectedValue屬性以及他們使用SelectedItem.Value的其他地方。DropDownList的SelectedValue與SelectedItem.Value
問:是SelectedValue
只爲SelectedItem.Value
或SelectedValue
原理不同引擎蓋下語法糖?哪一個表現更好?
編輯: SelectedItem.Text與SelectedItem.Value
我正在編寫一箇舊項目,然後多年來由幾個人修補。在某些地方,他們使用了SelectedValue屬性以及他們使用SelectedItem.Value的其他地方。DropDownList的SelectedValue與SelectedItem.Value
問:是SelectedValue
只爲SelectedItem.Value
或SelectedValue
原理不同引擎蓋下語法糖?哪一個表現更好?
編輯: SelectedItem.Text與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>
這裏,ddlUserTypes.SelectedItem.Value == ddlUserTypes.SelectedValue
和兩者都會返回值「1」。
ddlUserTypes.SelectedItem.Text
將返回 「管理員」,這是從ddlUserTypes.SelectedValue
編輯
引擎蓋下不同的SelectedValue看起來像這樣
public virtual string SelectedValue
{
get
{
int selectedIndex = this.SelectedIndex;
if (selectedIndex >= 0)
{
return this.Items[selectedIndex].Value;
}
return string.Empty;
}
}
和的SelectedItem看起來是這樣的:
public virtual ListItem SelectedItem
{
get
{
int selectedIndex = this.SelectedIndex;
if (selectedIndex >= 0)
{
return this.Items[selectedIndex];
}
return null;
}
}
這兩個屬性之間的一個主要區別是SelectedValue
也有一個設置器也因爲SelectedItem
沒有。 SelectedValue
的獲得者的SelectedValue
在編寫代碼時速度更快,並且執行性能的問題沒有真正的理由被討論。使用綁定表達式時,SelectedValue的一大優點也是。
編輯數據綁定方案(不能使用SelectedItem.Value)
<asp:Repeater runat="server">
<ItemTemplate>
<asp:DropDownList ID="ddlCategories" runat="server"
SelectedValue='<%# Eval("CategoryId")'>
</asp:DropDownList>
</ItemTemplate>
</asp:Repeater>
在droupDown列表取代有兩個項目添加屬性。
1)文本 2)值
如果你想獲得文本屬性然後u使用selecteditem.text
,如果你想選擇value屬性,然後使用SelectedValue屬性
在你案件我的事情的價值和文字財產都是一樣的,所以無論如果你使用selectedvalue或selecteditem.text
如果兩個不同,那麼他們給我們不同的結果
請檢查編輯 –
這個評論很混亂。是的,selectedValue屬性和selectedItem.Text可以是相同的,但很經常他們不像上面的例子,其中SelectedValue是「de」,SelectedItem.Text是「German」或SelectedValue是「CA」,而SelectedItem.Text是「California 」。通常,SelectedValue是數據庫主索引值的字符串表示形式,SelectedItem.Text是來自數據庫表中同一行的特定列的值。 –
它們都不同。 SelectedValue
屬性爲您提供了所選項目的實際值,而SelectedItem.Text
爲您提供了顯示文本。例如:你下拉可能有像
<asp:ListItem Text="German" Value="de"></asp:ListItem>
的紡織機械展覽會所以,在這種情況下SelectedValue
將de
和SelectedItem.Text
會給「德國」
編輯:
在這種情況下,他們都是一樣的...原因SelectedValue
會給你在下拉列表中當前選定項目存儲的值,並且SelectedItem.Value
將是當前選定項目的值。
所以他們都會給你同樣的結果。
檢查編輯..我錯誤地放.Text –
之間的一個重要區別兩個(這是可見的反射碼)是的SelectedValue將返回一個空字符串如果沒有選擇任何內容,而SelectedItem.Value將拋出一個NullReference異常。
小心使用SelectedItem.Text ... 如果沒有選擇的項目,那麼SelectedItem將爲空,並且SelectedItem.Text將生成一個空值異常。
.NET應該提供SelectedText屬性,如SelectedValue屬性,該屬性在沒有選定項目時返回String.Empty。
感謝您指出我..我錯誤地鍵入.Text ..其實.Value正在使用到處。那麼,兩個屬性(SelectedItem.Value和SelectedValue)的內部實現是相同的?與單跳離開的SelectedValue相比,SelectedItem(兩點)語法不是更復雜嗎? –
謝謝阿德里安。你能詳細瞭解綁定表達式的優點嗎?會非常感激! –
@vulcanraven,歡迎,我用數據綁定示例更新了答案 –