让UserControl 成为 Asp.Net ajax以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
很多时候 我们需要用到User Control 将部份UI或业务逻辑包装 下面将UserControl包装成Asp Net ajax 控件:简单示例:(ASCX) 这一段代码就不解释了:
Login Name: td> | asp:TextBox> td> tr> |
Password: td> | asp:TextBox> td> tr> table> (LoginPanel js) (控件相对应的js 注意get和set方法必须成对出现 与属性以 _ 隔开 ) 至于为什么 只是一种规定 查看MsAjax:中:Sys$Component$_setProperties: Codefunction Sys$Component$_setProperties(target properties) { /// /// /// var e = Function _validateParams(arguments [ {name: target } {name: properties } ]); if (e) throw e; var current; var targetType = Object getType(target); var isObject = (targetType === Object) || (targetType === Sys UI DomElement); var isComponent = Sys Component isInstanceOfType(target) && !target get_isUpdating(); if (isComponent) target beginUpdate(); for (var name in properties) { var val = properties[name]; var getter = isObject ? null : target[ get_ + name]; if (isObject || typeof(getter) !== function ) { var targetVal = target[name]; if (!isObject && typeof(targetVal) === undefined ) throw Error invalidOperation(String format(Sys Res propertyUndefined name)); if (!val || (typeof(val) !== object ) || (isObject && !targetVal)) { target[name] = val; } else { Sys$Component$_setProperties(targetVal val); } } else { var setter = target[ set_ + name]; if (typeof(setter) === function ) { setter apply(target [val]); } else if (val instanceof Array) { current = getter apply(target); if (!(current instanceof Array)) throw new Error invalidOperation(String format(Sys Res propertyNotAnArray name)); for (var i = j = current length l= val length; i < l; i++ j++) { current[j] = val[i]; } } else if ((typeof(val) === object ) && (Object getType(val) === Object)) { current = getter apply(target); if ((typeof(current) === undefined ) || (current === null)) throw new Error invalidOperation(String format(Sys Res propertyNullOrUndefined name)); Sys$Component$_setProperties(current val); } else { throw new Error invalidOperation(String format(Sys Res propertyNotWritable name)); } } } if (isComponent) target endUpdate();} LoginPanel cs using System; using System Collections Generic; using System Linq; using System Web; using System Web UI; using System Web UI WebControls; using System Text; /// /// LoginPanel /// public partial class LoginPanel : System Web UI UserControl IScriptControl { protected void Page_Load(object sender EventArgs e) { } protected override void Render(HtmlTextWriter writer) { writer AddAttribute(HtmlTextWriterAttribute Id this ClientID); writer RenderBeginTag( Div ); base Render(writer); writer RenderEndTag(); } protected override void OnPreRender(EventArgs e) { base OnPreRender(e); var sm = ScriptManager GetCurrent(this Page); sm RegisterScriptControl(this); sm RegisterScriptDescriptors(this); } #region IScriptControl public IEnumerable GetScriptDescriptors() { var descriptor = new ScriptControlDescriptor( CsharpFarmer LoginPanel this ClientID); descriptor AddElementProperty( userName UserName ClientID); descriptor AddElementProperty( password Password ClientID); yield return descriptor; } public IEnumerable GetScriptReferences() { var sr = new ScriptReference( ~/LoginPanel js ); yield return sr; } #endregion } 这一段代码中应当注意 lishixinzhi/Article/program/net/201311/11389 分页:123 |