科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道让ASP.NET简便使用SCRIPT

让ASP.NET简便使用SCRIPT

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在开发ASP.net应用程序过程中编写Script是件很烦人的事情,其实我们可以把常用的Script装成相应的.NET组件在服务端调用,这样可以大大简化Script的编写还提高的Script的重用。

作者:中国IT实验室 来源:中国IT实验室 2007年9月5日

关键字: ASP.NET SCRIPT

  • 评论
  • 分享微博
  • 分享邮件
 在开发ASP.net应用程序过程中编写Script是件很烦人的事情,其实我们可以把常用的Script装成相应的.NET组件在服务端调用,这样可以大大简化Script的编写还提高的Script的重用。


   
    以下是常用的打开模式窗体并获取返回值的类调用,实际上可以给设置多个参数传入和不同控件获取不同返回值的结果.


   
    定义打开窗体并设置返回值脚本类:
  
  HFSoft.Web.Scripts.ShowModalDialog dialog=new HFSoft.Web.Scripts.ShowModalDialog(
  XXX.Units.Config.WebBoot+"Appunit/WindowOpenDialog.aspx",
  FrmFailureLogSearch.PageURI());
  dialog.Height=400;
  dialog.Width=600;
  dialog.ReturnElements.Add(new HFSoft.Web.Scripts.ReturnElement(this.txtReturn.ClientID,"ReturnString"));
  HFSoft.Web.Scripts.ReGISterScript.RegiOnClick(cmdSearch,dialog);
  
    打开窗体设置返回值的代码:
  
  HFSoft.Web.Scripts.ReturnValues returnValue=new HFSoft.Web.Scripts.ReturnValues();
  returnValue.Add("ReturnString",filter);
  HFSoft.Web.Scripts.RegisterScript.RegiPageClient(this,"return",returnValue);
  
    打开窗体类的代码(其实很多Script都可以通过这样的方式来封装).
  
  00006 namespace HFSoft . Web . Scripts
  00007 {
  00008 /// <summary>
  00009 /// 创建打开窗体脚本类
  00010 /// 注意:返回值参数据接收的数据格式必须
  00011 /// key=value|key1=value1|.....
  00012 /// </summary>
  00013 public class ShowModalDialog : IExecuteScript
  00014 {
  00015 private const string _Dialog ="window.showModalDialog({0},' ',' dialogHeight : { 1 } px ;
  dialogWidth : { 2 } px ; edge : Raised ; center : Yes ; help : No ; resizable : No ; status : No ; scroll :
  Yes ;');" ;
  00016 #region IExecuteScript 成员
  00017 private bool mParent = false ;
  00018 /// <summary>
  00019 /// 是否需要加载父指向
  00020 /// </summary>
  00021 public bool Parent
  00022 {
  00023 get
  00024 {
  00025 // TODO: 添加 SetElementsValue.Parent getter 实现
  00026 return mParent ;
  00027 }
  00028 set
  00029 {
  00030 // TODO: 添加 SetElementsValue.Parent setter 实现
  00031 mParent = value ;
  00032 }
  00033 }
  00034 private string GetParent ()
  00035 {
  00036 if ( Parent )
  00037 return "parent." ;
  00038 return "" ;
  00039 }
  00040 /// <summary>
  00041 /// 构造对象
  00042 /// </summary>
  00043 /// <param name="pageContainer">容器页</param>
  00044 /// <param name="openPage">具本打开的页面</param>
  00045 public ShowModalDialog ( string pageContainer , string openPage )
  00046 {
  00047 PageContainer = pageContainer ;
  00048 OpenPage = openPage ;
  00049 }
  00050 public const string PageUrlTag ="pageurl" ;
  00051 /// <summary>
  00052 /// 生成脚本
  00053 /// </summary>
  00054 /// <returns>string</returns>
  00055 public string Execute ()
  00056 {
  00057 // TODO: 添加 ShowModalDialog.Execute 实现
  00058 string url ="' " + PageContainer +" ? pageurl ='+" + GetPage ();
  00059 url = string . Format ( _Dialog , url , Height , Width );
  00060 url = GetParent () + url ;
  00061 if ( ReturnElements . Count >0)
  00062 {
  00063 url = "var getvalue=" + url +";if(getvalue != null){" ;
  00064 foreach ( ReturnElement item in ReturnElements )
  00065 {
  00066 url += item . GetScript ( GetParent ()); 
  00067 }
  00068 url +="}" ;
  00069 return url +";" ;
  00070 }
  00071 return url +";" ;
  00072 }
  00073
  00074 #endregion
  00075 private string mPageContainer ;
  00076 /// <summary>
  00077 /// 获取或设置容器页(包含路径)
  00078 /// </summary>
  00079 public string PageContainer
  00080 {
  00081 get
  00082 {
  00083 return mPageContainer ;
  00084 }
  00085 set
  00086 {
  00087 mPageContainer = value ;
  00088 }
  00089 }
  00090 private string mOpenPage ;
  00091 /// <summary>
  00092 /// 打开的页(包含路径)
  00093 /// </summary>
  00094 public string OpenPage
  00095 {
  00096 get
  00097 {
  00098 return mOpenPage ;
  00099 }
  00100 set
  00101 {
  00102 mOpenPage = value ;
  00103 }
  00104 }
  00105 private int mHeight =400;
  00106 /// <summary>
  00107 /// 获取或设置打开窗体的高度
  00108 /// </summary>
  00109 public int Height
  00110 {
  00111 get
  00112 {
  00113 return mHeight ;
  00114 }
  00115 set
  00116 {
  00117 mHeight = value ;
  00118 }
  00119 }
  00120 private int mWidth =400;
  00121 /// <summary>
  00122 /// 获取或设置打开窗体的宽度
  00123 /// </summary>
  00124 public int Width
  00125 {
  00126 get
  00127 {
  00128 return mWidth ;
  00129 }
  00130 set
  00131 { 
   00132 mWidth = value ;
  00133 }
  00134 }
  00135 private ReturnElementCollections mReturnElements = new ReturnElementCollections ();
  00136 /// <summary>
  00137 /// 获取返回值元素集
  00138 /// </summary>
  00139 public ReturnElementCollections ReturnElements
  00140 {
  00141 get
  00142 {
  00143 return mReturnElements ;
  00144 }
  00145 }
  00146 private ParameterCollection mParameters = new ParameterCollection ();
  00147 /// <summary>
  00148 /// 获取打开页面的参数集
  00149 /// </summary>
  00150 public ParameterCollection Parameters
  00151 {
  00152 get
  00153 {
  00154 return mParameters ;
  00155 }
  00156 }
  00157 private string GetPage ()
  00158 {
  00159 if ( Parameters . Count ==0)
  00160 return "' "+OpenPage+" '" ;
  00161 System . Text . StringBuilder sb = new System . Text . StringBuilder ();
  00162 sb . Append ("' "+OpenPage+" '" );
  00163 string param ="" ;
  00164 string parent = GetParent ();
  00165 for ( int i =0; i < Parameters . Count ; i ++)
  00166 {
  00167 if ( Parameters [ i ]. Element == ElementType . Element )
  00168 {
  00169 param ="' " + Parameters[i].Name +" =' + " + parent +"document.all('
  "+Parameters[i].Value + " ').value" ;
  00170 }
  00171 else if ( Parameters [ i ]. Element == ElementType . Select )
  00172 {
  00173 param ="' " + Parameters[i].Name +" =' + " + parent +"__getSeletedButton(" + parent +
  "document.all(' "+Parameters[i].Value + " '))" ;
  00174 }
  00175 if ( i ==0)
  00176 {
  00177 sb . Append ("+' "+System.Web.HttpUtility.UrlEncode(" ?") +" '+" + param );
  00178 }
  00179 else
  00180 {
  00181 sb . Append ("+' "+System.Web.HttpUtility.UrlEncode(" &") +" '+" + param );
  00182 }
  00183 }
  00184 return sb . ToString ();
  00185 }
  00186
  00187
  00188
  00189 }
  00190 #region subClass
  00191 public enum ElementType
  00192 {
  00193 None ,
  00194 Element ,
  00195 Select 
  00196 }
  00197 /// <summary>
  00198 /// 参数描述类
  00199 /// </summary>
  00200 public class Parameter
  00201 {
  00202 /// <summary>
  00203 /// 构造参数对象
  00204 /// </summary>
  00205 public Parameter ()
  00206 {
  00207 }
  00208 /// <summary>
  00209 /// 构造指定名称和值的参数对象
  00210 /// </summary>
  00211 /// <param name="name">参数名称</param>
  00212 /// <param name="value">参数值</param>
  00213 public Parameter ( string name , string value )
  00214 {
  00215 Name = name ;
  00216 Value = value ;
  00217 }
  00218 /// <summary>
  00219 /// 构造指定名称和值的参数对象
  00220 /// </summary>
  00221 /// <param name="name">参数名称</param>
  00222 /// <param name="value">参数值</param>
  00223 /// <param name="iselement">值是否元素名称</param>
  00224 public Parameter ( string name , string value , ElementType element )
  00225 {
  00226 Name = name ;
  00227 Value = value ;
  00228 Element = element ;
  00229 }
  00230
  00231 private string mName ;
  00232 /// <summary>
  00233 /// 获取或设置参数名称
  00234 /// </summary>
  00235 public string Name
  00236 {
  00237 get
  00238 {
  00239 return mName ;
  00240 }
  00241 set
  00242 {
  00243 mName = value ;
  00244 }
  00245 }
  00246 private string mValue ;
  00247 /// <summary>
  00248 /// 获取或设置参数值
  00249 /// </summary>
  00250 public string Value
  00251 {
  00252 get
  00253 {
  00254 return mValue ;
  00255 }
  00256 set
  00257 {
  00258 mValue = value ; 
  00259 }
  00260 }
  00261 private ElementType mElement = ElementType . None ;
  00262 /// <summary>
  00263 /// 获取或设置参数值是否参数名称
  00264 /// </summary>
  00265 public ElementType Element
  00266 {
  00267 get
  00268 {
  00269 return mElement ;
  00270 }
  00271 set
  00272 {
  00273 mElement = value ;
  00274 }
  00275 }
  00276 }
  00277 public class ParameterCollection : System . Collections . CollectionBase
  00278 {
  00279 public Parameter this [ int index ]
  00280 {
  00281 get
  00282 {
  00283 return ( ( Parameter ) List [ index ] );
  00284 }
  00285 set
  00286 {
  00287 List [ index ] = value ;
  00288 }
  00289 }
  00290
  00291 public int Add ( Parameter value )
  00292 {
  00293 return ( List . Add ( value ) );
  00294 }
  00295
  00296 public int IndexOf ( Parameter value )
  00297 {
  00298 return ( List . IndexOf ( value ) );
  00299 }
  00300
  00301 public void Insert ( int index , Parameter value )
  00302 {
  00303 List . Insert ( index , value );
  00304 }
  00305
  00306 public void Remove ( Parameter value )
  00307 {
  00308
  00309 List . Remove ( value );
  00310 }
  00311
  00312 public bool Contains ( Parameter value )
  00313 {
  00314 // If value is not of type Int16, this will return false.
  00315 return ( List . Contains ( value ) );
  00316 }
  00317
  00318 }
  00319 /// <summary> 
  00320 /// 返回值接收元素描述类
  00321 /// </summary>
  00322 public class ReturnElement
  00323 {
  00324 /// <summary>
  00325 /// 构造对象
  00326 /// </summary>
  00327 /// <param name="id">接收值的元素ID</param>
  00328 /// <param name="key">对应值的键值</param>
  00329 public ReturnElement ( string id , string key )
  00330 {
  00331 ID = id ;
  00332 Key = key ;
  00333 }
  00334 private string mID ;
  00335 /// <summary>
  00336 /// 获取或设置元素ID
  00337 /// </summary>
  00338 public string ID
  00339 {
  00340 get
  00341 {
  00342 return mID ;
  00343 }
  00344 set
  00345 {
  00346 mID = value ;
  00347 }
  00348 }
  00349 private string mKey ;
  00350 /// <summary>
  00351 /// 获取或设置对应值的键值
  00352 /// </summary>
  00353 public string Key
  00354 {
  00355 get
  00356 {
  00357 return mKey ;
  00358 }
  00359 set
  00360 {
  00361 mKey = value ;
  00362 }
  00363 }
  00364 /// <summary>
  00365 /// 获取操作脚本
  00366 /// </summary>
  00367 /// <returns>string</returns>
  00368 public string GetScript ( string parent )
  00369 {
  00370 return parent +"document.all(' "+ID +" ').value=" + parent +"__AnalyseString(' "+Key +"
  ',getvalue);" ;
  00371 }
  00372 }
  00373 public class ReturnElementCollections : System . Collections . CollectionBase
  00374 {
  00375 public ReturnElement this [ int index ]
  00376 {
  00377 get
  00378 {
  00379 return ( ( ReturnElement ) List [ index ] );
  00380 } 
  00381 set
  00382 {
  00383 List [ index ] = value ;
  00384 }
  00385 }
  00386
  00387 public int Add ( ReturnElement value )
  00388 {
  00389 return ( List . Add ( value ) );
  00390 }
  00391
  00392 public int IndexOf ( ReturnElement value )
  00393 {
  00394 return ( List . IndexOf ( value ) );
  00395 }
  00396
  00397 public void Insert ( int index , ReturnElement value )
  00398 {
  00399 List . Insert ( index , value );
  00400 }
  00401
  00402 public void Remove ( ReturnElement value )
  00403 {
  00404
  00405 List . Remove ( value );
  00406 }
  00407
  00408 public bool Contains ( ReturnElement value )
  00409 {
  00410 // If value is not of type Int16, this will return false.
  00411 return ( List . Contains ( value ) );
  00412 }
  00413 }
  00414 #endregion
  00415 }

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章