「回發或回調參數無效。... 啟用了事件驗證 ...」
AJAX 動態更新 DropDownList 選項,導致回發時驗證失敗。設定 EnableEventValidation="false" 雖繞過驗證,但導致 ddlCabinet.Text 取不到值(因 ViewState 未正確追蹤動態項目)。
string value = Request.Form["ddlCabinet"]; // 直接從表單集合取得
在 Page_Load 或 Render 階段,將所有可能的選項值註冊給事件驗證:
protected override void Render(HtmlTextWriter writer) {
foreach (ListItem item in ddlCabinet.Items) {
ClientScript.RegisterForEventValidation(ddlCabinet.UniqueID, item.Value);
}
base.Render(writer);
}
將 DropDownList 放入 UpdatePanel,由 ASP.NET AJAX 自動處理 ViewState 與事件驗證,避免完整回發。
EnableEventValidation,這會降低安全性(CSRF 風險)。Page_Init 或 Page_Load (IsPostBack 判斷) 重建完整選項集合。