Написание сценариев во время разработки приложений ASP.NET — очень неприятная вещь. Фактически, мы можем устанавливать часто используемые сценарии в соответствующие компоненты .NET и вызывать их на сервере. Это может значительно упростить написание сценариев и улучшить их повторное использование. Скрипты.
Ниже приведен часто используемый вызов класса для открытия модальной формы и получения возвращаемого значения. Фактически, вы можете установить несколько параметров и получить разные возвращаемые значения для разных элементов управления.
Определите класс сценария, который открывает форму и устанавливает возвращаемое значение.
Диалог HFSoft.Web.Scripts.ShowModalDialog=новый HFSoft.Web.Scripts.ShowModalDialog(
XXX.Units.Config.WebBoot+"Appunit/WindowOpenDialog.aspx",
FrmFailureLogSearch.PageURI());
диалог.Высота=400;
диалог.Ширина=600;
диалог.ReturnElements.Add(new HFSoft.Web.Scripts.ReturnElement(this.txtReturn.ClientID,"ReturnString"));
HFSoft.Web.Scripts.RegisterScript.RegiOnClick(cmdSearch,dialog
code, чтобы открыть форму и установить возвращаемое значение
);
HFSoft.Web.Scripts.ReturnValues returnValue=новый HFSoft.Web.Scripts.ReturnValues();
returnValue.Add("ReturnString",фильтр);
HFSoft.Web.Scripts.RegisterScript.RegiPageClient(this, "return", returnValue);
Открыть код класса формы (на самом деле, таким способом можно инкапсулировать многие скрипты).
00006 пространство имен HFSoft . Web Scripts
00007 {
00008 /// <summary>
00009 /// Создайте класс сценария открытой формы
00010 /// Примечание. Формат данных, полученных с помощью возвращаемого значения параметра data, должен быть
00011 /// key=. value|key1 =value1|.....
00012 /// </summary>
00013 public class ShowModalDialog : IExecuteScript
00014 {
00015 Private const string _Dialog ="window.showModalDialog({0},' ',' DialogHeight : { 1 } px;
диалоговое окно: { 2 } px; край: поднято; центр: да; изменяемый размер: нет; прокрутка:
да;');";
00016 #region IExecuteScriptmember
00017 частный bool mParent = false ;
00018 / // <summary>
00019 /// Нужно ли загружать родительский указатель
00020 /// </summary>
00021 public bool Parent
00022 {
00023 get
00024 {
00025 // TODO: Добавить метод получения SetElementsValue.Parent для реализации
00026 return mParent ;
00027 }
00028 set
00029 {
00030 // TODO: Добавить установщик SetElementsValue.Parent для реализации
00031 mParent = value ;
00032 }
00033 }
00034 Private string GetParent ()
00035 {
00036 if (Parent)
0 0037 вернуть «родительский». ;
00038 return "" ;
00039 }
00040 /// <summary>
00041 /// Создать объект
00042 /// </summary>
00043 /// <param name="pageContainer">Страница контейнера</param>
00044 // / <param name="openPage" >Открыть страницу</param>
00045 public ShowModalDialog (строка pageContainer, string openPage)
00046 {
00047 PageContainer=
pageContainer;
00048 OpenPage = openPage;
00049 }
00050 public const string PageUrlTag ="pageurl" ;
/// <summary >
00052 /// Создать скрипт
00053 /// </summary>
00054 /// <returns>string</returns>
00055 public string Execute ()
00056 {
00057 // TODO: Добавить реализацию ShowModalDialog.Execute
00058 строка url = '' + PageContainer +" ? pageurl ='+" + GetPage ();
00059 url = string . Format ( _Dialog , url , Height , Width );
00060 url = GetParent () +
00061 if (; ReturnElements. Count >0)
00062 {
00063 url = "var getvalue=" + url +";if(getvalue != null){" ;
00064 foreach (элемент ReturnElement в ReturnElements)
00065 {
00066 url += item. ());
-------------------------------------------------- ----------------------------------
00067 }
00068 URL +="}" ;
00069 URL возврата +";" ;
00071 URL возврата +";" ;
00072 }
00073
00074
#endregion
00075 Private String 00076
/// <summary>
000 77 /// Получить или установить страницу контейнера (включая путь)
00078 /// </summary>
00079 public string PageContainer
00080 {
00081 get
00082 {
00083 return mPageContainer ;
00084 }
00085 set
00086 {
00087 mPageContainer = value ;
00088 }
00089 }
0 0090 частная строка mOpenPage ;
00091 /// <summary>
00092 /// Открыть страницу (включая путь)
00093 /// </summary>
00094 public string OpenPage
00095 {
00096 get
00097 {
00098 return mOpenPage ;
00099 }
00100 set
00101 {
00102 мопенпейдж = 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
}
00130 set
00131 {
-------------------------------------------------- ----------------------------------
00132 mWidth = value ;
00133 }
00134 }
00135 Private ReturnElementCollections mReturnElements = new ReturnElementCollections ();
00136 /// <summary>
00137 /// Получить набор элементов возвращаемого значения
00138 /// </summary>
00139 public ReturnElementCollections ReturnElements
0 0140 {
00 141 get
00142 {
00143 return mReturnElements ;
00144 }
00145 }
00146 PrivatemeterCollection mParameters = new ParameterCollection ();
00147 /// <summary>
00148 /// Получить набор параметров открытой страницы
00149 /// </summary>
00150 публичные параметры коллекции параметров
00151 {
00152 get
00153 {
00154 return mParameters ;
00155 }
00156 }
00157 частная строка GetPage ()
00158 {
00159 if (Parameters . Count ==0)
00160 return "' "+OpenPage+" '";
00161 Система. Text StringBuilder . sb = new System . StringBuilder ();
00162 sb . Append ("' "+OpenPage+" '");
00163
строковый параметр = GetParent ()
; 0; i < Параметры . Count ; я ++)
00166 {
00167 if ( Параметры [ i ]. Элемент == Тип Элемента . Элемент )
00168 {
00169 параметр ="' " + Параметры[i].Имя +" =' + " + родитель +" document.all('
"+Parameters[i].Value + " ').value" ;
00170 }
00171 else if ( Параметры [ i ]. Element == ElementType . Select )
00172 {
00173 param ="' " + Параметры[ i].Name +" =' + " + родительский +"__getSeletedButton(" + родительский +
"document.all(' "+Parameters[i].Value + " '))" ;
00174 }
00175 if ( i ==0)
00176 {
00177 sb . Append ("+' "+System.Web.HttpUtility.UrlEncode(" ?") +" '+" + param }
00179
else
00180 {
00181 sb . +' "+ System.Web.HttpUtility.UrlEncode(" &") +" '+" + param );
00182 }
00183 }
00184 return sb . ToString();
00185 }
00186
00187
00188
00189 }
00190 #region subClass
00191 public enum ElementType
0 0192 {
00193 Нет,
00194 Элемент,
00195 Выбрать
-------------------------------------------------- ----------------------------------
00196 }
00197 /// <summary>
00198 /// Класс описания параметра
00199 /// </summary>
00200 public class Параметр
00201 {
00202 /// <summary>
00203 /// Построение объекта параметра
00204 /// </ summary>
00205 public Параметр ()
00206 {
00207 }
00208 /// <summary>
00209 /// Создайте объект параметра с указанным именем и значением
00210 /// </summary>
00211 /// <param name="name "> Имя параметра</param>
00212 /// <param name="value">Значение параметра</param>
00213 общедоступный параметр (имя строки, строковое значение)
00214 {
00215 Имя = имя;
00216 Значение = значение;
00217 }
00218 / // <summary>
00219 /// Создайте объект параметра с указанным именем и значением
00220 /// </summary>
00221 /// <param name="name">Имя параметра</param>
00222 /// <param name ="value">Значение параметра</param>
00223 /// <param name="iselement">Является ли значение именем элемента</param>
00224 public Параметр (имя строки, значение строки, элемент ElementType)
00225 {
00226 Name = name ;
00227 Value = value ;
00228 Element = element ;
00229 }
00230
00231 частная строка 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 ;
/// <summary>
00248 /// Get или установите значение параметра
00249 /// </summary >
00250 public string Value
00251 {
00252 get
00253 {
00254 return mValue;
00255 }
00256 set
00257 {
00258 mValue = value;
-------------------------------------------------- ----------------------------------
00259 }
00260 }
00261 частный 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 = значение;
00274 }
00275 }
00276 }
00277 public class ParameterCollection: System CollectionBase
00278 {
00279 public Параметр this. [ int index ]
00280 {
0 0281 получаем
00282 {
00283 return ( (Параметр) Список [индекс]);
00285
set
00286 {
00287 Список [индекс] = значение;
00288 }
00289 }
00290
00291 public int Add (значение параметра)
00292 {
00293 return (Список. Добавить (значение) 00294
}
00295
00296 public int IndexOf (значение параметра)
00297 {
00298 return (List. IndexOf (значение));
00300
00301
public void Insert (int index, значение параметра)
00302 {
00303 List. value );
00304 }
00305
00306 public void Remove (значение параметра)
00307 {
00308
00309 List. Remove (value);
00310 }
00311
00312 public bool contains (значение параметра)
00313 {
00314 // Если значение не имеет типа Int16, это вернет false.
00315 return(
List.
contains(
value))
;
-------------------------------------------------- ----------------------------------
00320 /// Класс описания элемента, принимающего возвращаемое значение
00321 /// </summary>
00322 public class ReturnElement
00323 {
00324 /// <summary>
00325 /// Построить объект
00326 /// </summary>
00327 /// < param name="id">Идентификатор элемента, который получает значение</param>
00328 /// <param name="key">Значение ключа соответствующего значения</param>
00329 public ReturnElement (идентификатор строки, ключ строки)
00330 {
00331 ID = id ;
00332 Key = key ;
00333 }
00334 Private string mID ;
00335 /// <summary>
00336 /// Получить или установить идентификатор элемента
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 /// Get сценарий операции
00366 /// </ summary>
00367 /// <returns>string</returns>
00368 public string GetScript ( string родительский )
00369 {
00370 return родительский +"document.all(' "+ID +" ').value=" + родительский +"__AnalyseString (' "+Key +"
',getvalue);";
00371 }
00372 }
00373 public class ReturnElementCollections : System. CollectionBase
00374 {
00375 public ReturnElement this [ int index ]
00376 {
00377 get
00378 {
0037 9 return ((ReturnElement) Список [индекс])
;
-------------------------------------------------- ----------------------------------
00381 set
00382 {
00383 List [index] = значение;
00384}
00385}
00386
00387 public int Add (ReturnElement value)
00388 {
00389 return (List. Add (value));
00390 }
00391
00392 public int IndexOf (ReturnEl); значение элемента)
00 393 {
00394 return (List. IndexOf (значение));
00395 }
00396
00397 public void Insert (int index, значение ReturnElement)
00398 {
00399 List. Insert (индекс, значение)
}
00401
00402 public void Remove (значение ReturnElement)
00403 {
00404
00405 List . Remove (значение);
00406 }
00407
00408 public bool contains (ReturnElement value)
00409 {
00410 // Если значение не имеет типа Int16, это вернет false
(List. contains (value)). ;
00412 }
00413 }
00414 #endregion
00415 }