2011-11-11 37 views
5

Dưới đây là mã đơn giản của tôi để sử dụng nhà nước kiểm soát trong một điều khiển tùy chỉnh,Làm thế nào để sử dụng nhà nước kiểm soát trong asp.net

[DefaultProperty("Text")] 
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")] 
public class WebCustomControl1 : WebControl 
{ 
    [Bindable(true)] 
    [Category("Appearance")] 
    [DefaultValue("")] 
    [Localizable(true)] 
    public string Text 
    { 
     get { return text; } 
     set { text = value; } 
    } 
    private string text; 

    protected override void RenderContents(HtmlTextWriter output) 
    { 
     output.Write(Text); 
    } 

    protected override void OnInit(System.EventArgs e) 
    { 
     base.OnInit(e); 
     Page.RequiresControlState(this); 
    } 

    protected override object SaveControlState() 
    { 
     object baseSate = base.SaveControlState(); 
     return new Pair(baseSate, Text); 
    } 

    protected override void LoadControlState(object savedState) 
    { 
     Pair value = savedState as Pair; 
     text = value.Second; 
    } 
} 

Nhưng nó dường như không làm việc .. Các SaveControlState và LoadControlState không bắn . Ai đó có thể giúp tôi..?

Dưới đây là mã aspx. Đây là nơi tôi sử dụng điều khiển tùy chỉnh.

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

<%@ Register Assembly="WebApplication1" Namespace="WebApplication1" TagPrefix="cc1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head>`enter code here` 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <cc1:WebCustomControl1 ID="WebCustomControl1_1" runat="server" /> 
     <asp:Button ID="Button1" runat="server" Text="Button" /></div> 
    </form> 
</body> 
</html> 
+0

bạn có thể hiển thị mã đánh dấu cho điều khiển trên trang .aspx –

Trả lời

7

Bạn đã gọi RequiresControlState

Xác định xem đối tượng kiểm soát quy định được đăng ký để tham gia vào tình trạng kiểm soát management.`

Nhưng bạn nên gọi RegisterRequiresControlState

Đăng ký một điều khiển là người có trạng thái kiểm soát m ust được kiên trì.

+0

Cảm ơn rất nhiều bài đăng. – Muthukumar

Các vấn đề liên quan