首页 新闻 会员 周边

一个自定义控件传值的问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-18 17:13

我这里有一个自定义控件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI;
namespace ClassLibrary1
{
    public class Control : WebControl
    {
        protected override HtmlTextWriterTag TagKey
        {
            get
            {
                return HtmlTextWriterTag.Div;
            }
        }

        public string Text
        {
            get
            {
                object o = ViewState["Text"];
                if (o != null)
                {
                    return o.ToString();
                }
                else
                {
                    return string.Empty;
                }
            }
            set {
                this.ViewState["Text"] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter writer)
        {
            base.RenderContents(writer);
            writer.Write("<input tupe='text' id='Text_Input' value='"+this.Text+"'>");
      
        }


       

    }
}

页面上引用了这个控件,并且我有一个button,我想要点击button的时候可以把

Text_Input 里面输入的值传出来
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string s = this.Control1.Text;
        }
    }
}

页面的后台代码我是这样写的,这里的s是”“。

 

我大概知道我的问题是因为在input里输入值后viewstate里并没有更新,然后我去viewstate中取值,当然还是”“。

 

但是我却不知道给怎么做。求指教~~

 
动感超人z的主页 动感超人z | 初学一级 | 园豆:1
提问于:2013-03-16 14:30
< >
分享
最佳答案
0

没看,感觉大概意思是没弄懂客户端跟服务器之间的关系,如果你想你写的C#代码执行,那肯定要回发到服务器了。

收获园豆:3
顾晓北 | 专家六级 |园豆:10844 | 2013-03-18 10:01

这里截取的是所有页面发送到服务器的信息,这里并没有 我的控件 我的控件Id是MyControl

而我用

Page.FindControl(“MyControl”)

这句代码确实找到了我的控件,但是属性值并不是在客户端的文本框中输入的值,而是原本在服务器端赋的值,就是说我的控件在客户端输入的值没有被传到服务器

 Page.RegisterRequiresViewStateEncryption();

我在Oninit中有加入上面一局代码

动感超人z | 园豆:1 (初学一级) | 2013-03-18 11:33
其他回答(2)
0
收获园豆:2
陈希章 | 园豆:2538 (老鸟四级) | 2013-03-16 15:46
    protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            Page.RequiresControlState(this);
        }

        protected override void LoadControlState(object savedState)
        {
              base.LoadControlState(savedState);
              this.Text = savedState.ToString();
        }
我在代码里重写了这两个方法了,还是没有效果呢,
支持(0) 反对(0) 动感超人z | 园豆:1 (初学一级) | 2013-03-16 16:01
0

解决了,查msdn查的我都脑袋疼

动感超人z | 园豆:1 (初学一级) | 2013-03-18 17:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册