2013-05-03 23 views
6

Bazı durumlarda, görünümde bir durumun kalıcı olması gereken bir kullanıcı denetimi var. Bir geri gönderme olduğunda, görünümdeki girdiler boş olarak ayarlanır.UserControl Viewstate, geri gönderildikten sonra tüm değerleri kaybeder

Sayfa

Kullanıcı Kontrol ben sayfayı yüklemek

<%@ Control Language="C#" ClassName="JournalRankRadioButton" %> 
<script runat="server">  
    public String Test 
    { 
     get 
     { 
      if (ViewState["Test"] == null) 
      { 
       ViewState["Test"] = String.Empty; 
      } 
      return ViewState["Test"].ToString(); 
     } 
     set 
     { 
      ViewState["Test"] = value; 
     } 
    } 

public void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.Test = "Test"; 
    } 
} 
</script> 
<asp:CheckBox runat="server" AutoPostBack="true" /> 

ViewState [ "Test"] için "Deneme", ama onay kutusunu işaretleyin zaman, sayfa yapar atanır

<%@ Page Title="" Language="C#" MasterPageFile="~/Main.master" %> 
<%@ Register TagPrefix="JR" TagName="JournalRanking" Src="~/Controls/JournalRankRadioButton.ascx" %> 
<script runat="server"> 
</script> 

<asp:Content ID="Content3" ContentPlaceHolderID="Content1placeholder" Runat="Server"> 
    <asp:Panel CssClass="insetBG1" ID="FormView1" runat="server"> 
     <JR:JournalRanking ID="JournalRanking1" runat="server" ViewStateMode="Inherit" /> 
    </asp:Panel> 
</asp:Content> 

Bir geri gönderme ve ViewState ["Test"] tekrar boştur. Neyi kaçırıyorum? Ben sayfa ve kontrol EnableViewState içinde EnableViewState = true ayarı olsa bile Yani -Update-

, ana sayfasında yanlış oldu. Ben işe gitmek için Kontrol için

this.Page.Master.EnableViewState = true; 

eklemek zorunda kaldı.

Yardımın için teşekkürler!

+1

Hangi onay kutusu? Ve ViewState'in değerini nerede kontrol ediyorsunuz? Lütfen daha fazla kod ekleyin – nmat

+0

Bu onay kutusu (Postback'i tetiklemek için orada jus var) ve ViewState'i geri gönderimdeki Page_Load yöntemindeki hata ayıklayıcısında kontrol ediyorum. – user467384

cevap

8

Kodunuz burada mükemmel çalışıyor. Düşünebildiğim tek açıklama, ViewState'in bir ana denetimde devre dışı bırakılmasıdır. JournalRanking, bir MasterPage içindeki bir sayfanın içinde. Herhangi bir yerde EnableViewState=false bulunmadığından emin olun, çünkü bu sayfa geri yüklemesinde değeri almanızı engeller.

+1

EnableViewState, ana sayfada yanlıştı (açık olarak ayarlandığını bulamadım). Kontrolde doğru olarak ayarlanması sorunu çözdü. – user467384