下面是我在查看一些代碼時遇到的一個錯誤的重現。這是一個asp中的錯誤:DropDownList行爲
aspx頁面:
隱藏文件<asp:DropDownList ID="ddlMain" runat="server" Visible="False" />
<asp:Button ID="btnSelect" runat="server" Text="Select" />
代碼:
protected void Page_Load(object sender, EventArgs e)
{
ddlMain.SelectedIndex = 0;
}
注意ddlMain有visible=False
。在頁面加載時,如果我分配selectedIndex = 0; selectedIndex值不會更改並保持-1。
該按鈕用於啓用回發;回發上述聲明失敗,並提出以下例外:
'ddlMain'有一個SelectedIndex,因爲它不存在於項目列表中,所以它是無效的。 參數名稱:值
爲什麼第一次出現異常? 爲什麼它會在回發後得到提升?
我注意到,即使下拉列表的渲染爲0,在視圖狀態下仍然有12個字節被分配 - 儘管我無法確認控件存儲的是什麼。如果我禁用viewstate然後回發後異常不會引發。
向我們展示Button Click的代碼。 – freebird
在按鈕點擊中沒有任何反應 – NoviceProgrammer
我知道'.SelectedValue'的賦值只會在後處理中引起異常([MSDN上的詳細信息](http://msdn.microsoft.com/zh-cn/library/) system.web.ui.webcontrols.listcontrol.selectedvalue.aspx),其中指出「所選值不在可用值列表中,並且視圖狀態或其他狀態已被加載(已執行回發)」),但是在那裏對於'.SelectedIndex'屬性沒有這樣的聲明。我唯一能想到的其他事情是關閉下拉視圖狀態,因此沒有項目可以選擇回退 – freefaller