簡體   English   中英

ASP.NET DropDownList.SelectedValue在具有動態數據綁定的PostBack上沒有值

[英]ASP.NET DropDownList.SelectedValue has not value on PostBack with dynamic data-binding

設定
使用:Visual Web Developer 2010 Express。
語言:C#。
目標框架:.NET Framework 4。
ViewState:我已在Web.Config中禁用ViewState-即<configuration><system.web><pages enableViewState="false" />

問題
我有一個帶有標准DropDownList控件的ASP.NET頁。
我在DropDownList上設置了EnableViewState =“ true”和ViewStateMode =“ Enabled”。
我在后面的代碼中使用數據綁定來填充控件(工作正常)。
數據綁定發生在初始加載和回發時從Page_PreRender進行的調用中。
在來自Button Click事件處理程序的調用中(即,在Page_PreRender之前),我嘗試從DropDownList的SelectedValue屬性讀取。
問題是:我收到的只是一個零長度字符串(“”)值,並且對對象的檢查表明控件包含to值。


確保在包含DropDownList的頁面上的<%@ Page%>指令中設置了EnableViewState =“ true”。

另外,您可以為DropDownList創建一個擴展方法,該方法從HttpRequest集合中讀取值。
例如

public static string GetSelectedValue(this System.Web.UI.WebControls.DropDownList listBox)
{
  return HttpContext.Current.Request[listBox.ClientID];
}

您是正確的(除了Jason指出的UniqueID)

但是為什么要全局禁用viewstate? 這是asp.net的一項重要功能,並且對於您的頁面中的許多功能而言都是必需的。 對於大多數控件而言,它並不是那么糟糕,因此沒有理由擔心它。

您想密切注意生成大量標記(例如網格)的控件,並在這些控件上禁用它。

只需在Page指令中打開Trace,您將看到控制樹上每個節點正在使用多少viewstate。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM