2012-08-02 67 views
3

default.aspx頁面有一個DropDownList,只有當它不是postback時,它才填充在代碼後面。當選擇一個值時,會調用一個方法,用所選值填充Literal。它按預期工作。問題是當我將頁面設置爲不是EnableViewState時,僅在DropDownList控件中啓用它。在這種情況下,當發回DropDownList失去其物品。我已經建立了一個新的Web項目來測試它。沒有母版頁使它變得更簡單。EnableViewState在DropDownList中不起作用

的Default.aspx:

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="WebApplication4._Default" 
    EnableViewState="false" %> 

<asp:DropDownList ID="DDL" runat="server" 
    OnSelectedIndexChanged="DDL_OSIC" 
    AutoPostBack="true" 
    EnableViewState="true"> 
</asp:DropDownList> 

<asp:Literal ID="Literal1" runat="server"></asp:Literal> 

Default.aspx.cs:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DDL.Items.Add("red"); 
     DDL.Items.Add("green"); 
     DDL.Items.Add("blue"); 
    } 
} 
protected void DDL_OSIC(object sender, EventArgs e) 
{ 
    Literal1.Text = DDL.SelectedValue; 
} 

爲什麼不工作的EnableViewState?

回答

4

找到答案與刪除答案的幫助。被刪除的答案是錯誤的,因爲它是不完整的。有了這個提示,我發現了the ViewStateMode Property page

總結它禁用所有控件的ViewState中並啓用它只是用於已選定的:

  • 同時設置頁面和所有控件的EnableViewState屬性true。這是默認的,因此沒有必要
  • 設置頁面ViewStateModeDisabled
  • 在您需要的控制設置ViewStateModeEnabled的ViewState啓用
-3

在我的電腦,我創建了一個網站寫什麼應用程序。結果與你一樣。 我想,當頁面viewstate爲false時,控件viewstate不能工作。

+0

這不是問題的答案。 – bmargulies 2012-09-14 00:35:58

相關問題