我写的服务器控件(未完,模型如此)

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Resources;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls; namespace DecColorPicker
{
[DefaultProperty("DecColorPickerControl")]
[ToolboxData("<{0}:DecColorPickerControl runat=server></{0}:DecColorPickerControl>")]
public class DecColorPickerControl : WebControl, IPostBackDataHandler
{ public string ColorValue
{
get
{
string viewstr = this.ID + "_ColorValue";
object text = ViewState[viewstr];
if (text == null)
return string.Empty;
else
return (string)text;
}
set
{
string viewstr = this.ID + "_ColorValue";
ViewState[viewstr] = value;
}
} public string DivContranerID
{
get
{
string viewstr = this.ID + "_DivContranerID";
String s = (String)ViewState[viewstr];
return ((s == null) ? this.ID + "DecTextBox" : s);
} set
{
string viewstr = this.ID + "_DivContranerID";
ViewState[viewstr] = value;
}
} public string PickerBtnID
{
get
{
string viewstr = this.ID + "_PickerBtnID";
String s = (String)ViewState[viewstr];
return ((s == null) ? this.ID + "_PickerBtn" : s);
} set
{
string viewstr = this.ID + "_PickerBtnID";
ViewState[viewstr] = value;
}
} [Description("设置按钮的文本")]
public string PickerBtnText
{
get
{
string viewstr = this.ID + "_PickerBtnText";
String s = (String)ViewState[viewstr];
return ((s == null) ? "选择颜色" : s);
} set
{
string viewstr = this.ID + "_PickerBtnText";
ViewState[viewstr] = value;
}
} [Description("是否显示按钮")]
public bool ShowPickerBtn
{
get
{
string viewstr = this.ID + "_ShowPickerBtn";
var s = ViewState[viewstr];
return s == null ? true : (Convert.ToBoolean(s));
} set
{
string viewstr = this.ID + "_ShowPickerBtn";
ViewState[viewstr] = value;
}
} #region 选择器配置 [Bindable(false), DefaultValue(""), Browsable(true), Description("颜色选择器的宽度"), Category("选择器设置")]
public string PickerWidth
{
get
{
string viewstr = this.ID + "_PickerWidth";
String s = (String)ViewState[viewstr];
return ((s == null) ? "" : s);
}
set
{
string viewstr = this.ID + "_PickerWidth";
ViewState[viewstr] = value;
}
}
[Bindable(false), DefaultValue(""), Browsable(true), Description("颜色选择器的高度"), Category("选择器设置")]
public string PickerHeight
{
get
{
string viewstr = this.ID + "_PickerHeight";
String s = (String)ViewState[viewstr];
return ((s == null) ? "" : s);
}
set
{
string viewstr = this.ID + "_PickerHeight";
ViewState[viewstr] = value;
}
} #endregion public string Text
{
get
{
object text = ViewState["Text"];
if (text == null)
return string.Empty;
else
return (string)text;
}
set
{
ViewState["Text"] = value;
}
}
public event EventHandler TextChanged; protected void OnTextChanged(EventArgs e)
{
if (TextChanged != null)
TextChanged(this, e);
} public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
string postedData = postCollection[postDataKey];//回发回来的字符串 if (!this.ColorValue.Equals(postedData))
{
this.ColorValue = postedData;
return true;
}
else
{
return false;
}
} public void RaisePostDataChangedEvent()
{
OnTextChanged(EventArgs.Empty);
}
protected override void Render(HtmlTextWriter writer)
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<div id=\"{0}\">", this.DivContranerID);
sb.AppendFormat("<script>{0}</script>", DecColorPicker.Properties.Resources.colorPicker);
//注意此处必须为UniqueID 原因是与LoadPostData的postDataKey 一一对应 lcc
sb.AppendFormat("<input type='text' onclick='colorPicker(event)' id='{0}' name='{0}' />", this.UniqueID);
if (this.ShowPickerBtn)
{
sb.AppendFormat("<input type=\"button\" value=\"{0}\" onclick=\"document.getElementById('{1}').click();\">", this.PickerBtnText, this.UniqueID); }
sb.Append("</div>");
writer.Write(sb.ToString()); }
}
}

注意:
sb.AppendFormat("<input type='text' onclick='colorPicker(event)' id='{0}' name='{0}' />", this.UniqueID);

这个textbox的ID必须为UniqueID,如果填写别的ID将无法进行PostData的回发绑定。

此问题我纠结了很久。才发现的。。。。

服务器控件数据回发实现IPostBackDataHandler需注意的的更多相关文章

  1. 在 ASP.NET 网页中不经过回发而以编程方式实现客户端回调

    在 ASP.NET 网页的默认模型中,用户会与页交互,单击按钮或执行导致回发的一些其他操作.此时将重新创建页及其控件,并在服务器上运行页代码,且新版本的页被呈现到浏览器.但是,在有些情况下,需要从客户 ...

  2. 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。

    问题补充: “/Source”应用程序中的服务器错误. 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或 ...

  3. asp.net 回发或回调参数无效的各种情况分析及解决办法

    昨天,在实现级联菜单的时候,突然出现一下错误: 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中 ...

  4. 点击datalist中Button按钮出现“回发或回调参数无效......”

        遇到问题: 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page ...

  5. FineUIMvc随笔 - 不能忘却的回发(__doPostBack)

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户反馈 有网友在官方论坛抛出了这么一个问题,似乎对 FineUIMvc 中的浏览器端与服务器端的交互方式很有异议. 这里面的关 ...

  6. 转:运行page页面时的事件执行顺序及页面的回发与否深度了解

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  7. FineUIMvc随笔(3)不能忘却的回发(__doPostBack)

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户反馈 有网友在官方论坛抛出了这么一个问题,似乎对 FineUIMvc 中的浏览器端与服务器端的交互方式很有异议. 这里面的关 ...

  8. System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation="true"/>

    转载自http://blog.csdn.net/dongge825/article/details/7868151 关于在同一个页面中使用Gridview控件的时候发现气updaeting事件无法被服 ...

  9. 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证

    WebForm中回发或回调参数无效问题的解决 解决 .NET中回发或回调参数无效问题的解 该错误的详细提示信息为: 回发或回调参数无效.在配置中使用 <pages enableEventVali ...

随机推荐

  1. Java-Maven-Runoob:Maven 自动化部署

    ylbtech-Java-Maven-Runoob:Maven 自动化部署 1.返回顶部 1. Maven 自动化部署 项目开发过程中,部署的过程包含需如下步骤: 将所的项目代码提交到 SVN 或者代 ...

  2. xunsearch安装使用

    目录 1.下载 2.进入,安装 3.安装成功后,启动后台服务 4.安装PHP-SDK 安装步骤 1.下载 wget http://www.xunsearch.com/download/xunsearc ...

  3. 腾讯云搭建php环境

    1.安装搭建论坛必要的软件 apache  php  mysql CentOS系统我们可以直接使用 yum install 的方式进行软件安装,腾讯云有提供软件安装源,是同步CentOS官方的安装源, ...

  4. 【转】Context.getExternalFilesDir()和Context.getExternalCacheDir()方法

    应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的.大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中.这样当该应用被卸载后,这些数据还 ...

  5. 三级联动第二种方法 三级联动.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. ubuntu安装nginx踩坑

    ubuntu安装nginx 安装nginx tar -zxvf nginx-1.15.5.tar.gz -C /usr/local/src 解压 cd /usr/local/src/nginx-1.1 ...

  7. 简单的HTTP服务实现

    最近因工作需要为外部公司提供http服务,由于内容比较少,同时为了方便安装,就想着自己写一个简单的服务器. 思路是将一个Http服务器嵌入一个Windows Service程序中,于是在网上找了很多资 ...

  8. Oracle T4-2 使用ILOM CLI升级Firmware

    简单记录一下使用命令行升级Firmware的过程. 升级前版本 -> version SP firmware 3.2.1.8.a SP firmware build number: 88456 ...

  9. STM32用有源蜂鸣器实现闹钟的声响

    有源蜂鸣器的声音是固定的,工作电压恒定,改变通断电的时间获得不同时长的音响,譬如连续音.快速短音.慢速长音(类似莫尔斯电报)来区分不同的报警信息. 简单的说,有源蜂鸣器只能发出一种声音,因为它的频率是 ...

  10. JS判断IE,FF,Opera,Safari等浏览器类型

    第一种,只区分浏览器,不考虑版本 function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var ...