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

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. path设置

    查看 export declare -x HISTCONTROL="ignoredups"declare -x HISTSIZE="1000"declare - ...

  2. POJ2226(最小顶点覆盖)

    Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10044   Accepted: 3743 Des ...

  3. web.config 权限设置

    <system.web> <authorization> <!--未登陆用户不可以访问--> <deny users="?" /> ...

  4. python开发模块基础:re正则

    一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() ...

  5. 黑客工具包ShadowBrokers浅析

    臭名昭著的方程式组织工具包再次被公开,TheShadowBrokers 在 steemit.com博客上提供了相关消息. 本次被公开的工具包大小为117.9MB,包含23 个黑客工具,其中部分文件显示 ...

  6. 切面(Aspect)获取请求参数和返回值

    @Before("webLog()") public void doBefore(JoinPoint joinPoint) throws Throwable { // 接收到请求, ...

  7. Java字节码

    Java字节码 javap -c 反编译.class文件可得字节码 知乎讨论https://www.zhihu.com/question/27831730 栈和局部变量操作 将常量压入栈的指令 aco ...

  8. A Recipe for Training Neural Networks [中文翻译, part 1]

    最近拜读大神Karpathy的经验之谈 A Recipe for Training Neural Networks  https://karpathy.github.io/2019/04/25/rec ...

  9. mybatis的执行流程 #{}和${} Mysql自增主键返回 resultMap 一对多 多对一配置

    n Mybatis配置 全局配置文件SqlMapConfig.xml,配置了Mybatis的运行环境等信息. Mapper.xml文件即Sql映射文件,文件中配置了操作数据库的Sql语句.此文件需要在 ...

  10. 数字图像处理实验(13):PROJECT 05-04,Parametric Wiener Filter 标签: 图像处理MATLAB 2017-05-27 10:59

    实验要求: Objective: To understand the high performance of the parametric Wiener Filter in image restora ...