Asp.net 恢复页面内用户控件内的控件ClientID
众所周知在Asp.net中如果一个页面添加了一个用户控件(或母版页),那么用户控件内的控件的 ClientID号会被自动添加页面中用户控件的ClientID
//htl add 2014-12-25 //页面中用户控件的id号 var _id = ‘details1_‘; //将用户控件中的控件id中的用户控件id替换掉 jQuery("[id*=" + _id + "]").each(function($) { $(this).attr("id", $(this).attr("id").replace(_id, "")); //添加自定义属性,用于在回发之前恢复asp.net生成的id号 $(this).attr(‘usercontrol‘, ‘‘); }); //在回发之前恢复asp.net生成的id号 jQuery("form").submit(function() { jQuery("[usercontrol]").each(function() { $(this).attr("id", _id + $(this).attr("id")); }); });
3.在asp.net页面中通过代码进行替换,此方式将导致在回发时会无法找到对应的控件id而导致无法找到真正的控件而影响业务处理
/// <summary> /// htl add 2014-12-25 /// 恢复用户控件中控件的ClientID号 /// 原因是在页面中调用用户控件时,用户控件里的控件的ClientID会被自动添加用户控件id /// </summary> /// <param name="writer"></param> protectedoverridevoidRender(HtmlTextWriter writer) { System.IO.StringWriter sw = newSystem.IO.StringWriter(); base.Render(newHtmlTextWriter(sw)); //获取正常输出的html,包含__VIEWSTATE //过滤掉该控件的ClientID号恢复用户控件内的控件的ClientID //注意过滤掉后会导致在回发时无法找到真正的控件 writer.WriteLine(Web.PageHelp.RegexStr(@details1.ClientID + "_", sw.ToString()).Trim()); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。