这阶段在做jquery的时候发觉公司有个很不错的架构,直接用aspx来模拟异步请求,不需要把页面定义为ashx文件来.
首先,定义一个基类:
/// <summary> /// Ajax处理的基类页面。 /// </summary> public class AjaxBasePage : SecureBasePage { #region 属性 #region 属性 protected FormManager FormManager { get { return new FormManager(HttpContext.Current.Request); } } #endregion /// <summary> /// 返回Ajax页面的Response /// </summary> /// <param name="jsonMessage">结果消息</param> protected void SetEndResponse(string jsonMessage) { Response.Clear(); Response.Write(jsonMessage); Response.End(); } #endregion }
FormManager如下:
/// <summary> /// 网站Form内容管理辅助类 /// </summary> public class FormManager { #region 字段 & 属性 private const string KEY_FORM_CONTEXT = "KeyFormManagerContext"; private HttpRequest _currentRequest; public static FormManager Current { get { if (HttpContext.Current.Items[KEY_FORM_CONTEXT] == null) { HttpContext.Current.Items[KEY_FORM_CONTEXT] = new FormManager(HttpContext.Current.Request); } return HttpContext.Current.Items[KEY_FORM_CONTEXT] as FormManager; } } #endregion #region 方法 /// <summary> /// 构造方法 /// </summary> /// <param name="request">当前Http请求</param> public FormManager(HttpRequest request) { _currentRequest = request; } /// <summary> /// 获取Form的值 /// </summary> /// <param name="paramName">参数值</param> /// <returns>参数返回值</returns> public NameValueCollection NameValueCollection { get { return _currentRequest.Form; } } /// <summary> /// 获取Form的值 /// </summary> /// <param name="paramName">参数值</param> /// <returns>参数返回值</returns> public string[] GetValues(string valueName) { return _currentRequest.Form.GetValues(valueName); } /// <summary> /// 获取Form的值 /// </summary> /// <param name="paramName">特定参数前缀</param> /// <returns>参数返回值集合</returns> public NameValueCollection GetCollectionStartWithSpecialName(string valueName) { NameValueCollection result = new NameValueCollection(); NameValueCollection allNameValueCollection = _currentRequest.Form; foreach (string name in allNameValueCollection.AllKeys) { if (name.ToUpper().Trim().StartsWith(valueName.ToUpper().Trim())) { result.Add(name, GetFormValue(name)); } } return result; } /// <summary> /// 获取Form的值 /// </summary> /// <param name="paramName">参数值</param> /// <returns>参数返回值集合</returns> public NameValueCollection GetCollectionEqualSpecialName(string valueName) { NameValueCollection result = new NameValueCollection(); NameValueCollection allNameValueCollection = _currentRequest.Form; foreach (string name in allNameValueCollection.AllKeys) { if (name.ToUpper().Trim().Equals(valueName.ToUpper().Trim())) { result.Add(name, GetFormValue(name)); } } return result; } /// <summary> /// 获取Form的值 /// </summary> /// <param name="paramName">参数值</param> /// <returns>参数返回值</returns> public string GetRequestFormValue(string valueName) { return GetFormValue(valueName); } /// <summary> /// 获取Form的值 /// </summary> /// <param name="paramName">参数值</param> /// <returns>参数返回值</returns> public string GetFormValue(string paramName) { if (string.IsNullOrEmpty(_currentRequest.Form.Get(paramName))) { return string.Empty; } return _currentRequest.Form.Get(paramName).Trim(); } #endregion #region Form 参数名称 //地址相关 public const string RECIPIENT_PARAM = "Recipient"; public const string POST_CODE_PARAM = "PostCode"; public const string CITY_PARAM = "City"; public const string CITY_NAME_PARAM = "CityName"; public const string PROVINCE_PARAM = "Province"; public const string PROVINCE_NAME_PARAM = "ProvinceName"; public const string DISTRICT_PARAM = "District"; public const string DISTRICT_NAME_PARAM = "DistrictName"; public const string ADDRESS_PARAM = "Address"; public const string AMOUNT_PARAM = "Amount"; //发票相关 public const string IS_NEED_INVOICE_PARAM = "bill_select"; public const string ADDRESS_ID_PARAM = "AddressID"; public const string INVOICE_DESCRIPTION_PARAM = "InvoiceDescription"; public const string INVOICE_HEAD_PARAM = "InvoiceHead"; public const string INVOICE_CONTENT_ID_PARAM = "InvoiceContentID"; //操作类别 public const string ACTION_PARAM = "Action"; //订单相关 public const string IS_NEED_BLOCK_PARAM = "IsNeedBlock"; #region add by hanlihui 2011-07-04 //充值客户信息相关 public const string HASCUSMINFO_PARAM = "HasCusmInfo"; public const string REALNAME_PARAM = "RealName"; public const string IDCARD_PARAM = "IdCard"; public const string MOBILEPHONE_PARAM = "MobilePhone"; public const string AREACODE_PARAM = "AreaCode"; public const string TELEPHONE_PARAM = "Telephone"; public const string TELEXTENSION_PARAM = "TelExtension"; #endregion //是否繁体 public const string IS_BIG5 = "IsBig5"; public const string TICKET_TYPE = "TicketType"; public const string INVOICE_CONTENT = "InvoiceContent"; #endregion #region Form 参数值 //地址相关 public string Recipient { get { return GetFormValue(RECIPIENT_PARAM); } } public string PostCode { get { return GetFormValue(POST_CODE_PARAM); } } public string City { get { return GetFormValue(CITY_PARAM); } } public string CityName { get { return GetFormValue(CITY_NAME_PARAM); } } public string Province { get { return GetFormValue(PROVINCE_PARAM); } } public string ProvinceName { get { return GetFormValue(PROVINCE_NAME_PARAM); } } public string District { get { return GetFormValue(DISTRICT_PARAM); } } public string DistrictName { get { return GetFormValue(DISTRICT_NAME_PARAM); } } public string Address { get { return GetFormValue(ADDRESS_PARAM); } } public string Amount { get { return GetFormValue(AMOUNT_PARAM); } } //发票相关 public string IsNeedInvoice { get { return GetFormValue(IS_NEED_INVOICE_PARAM); } } public string AddressID { get { return GetFormValue(ADDRESS_ID_PARAM); } } public string InvoiceDescription { get { return GetFormValue(INVOICE_DESCRIPTION_PARAM); } } public string InvoiceHead { get { return GetFormValue(INVOICE_HEAD_PARAM); } } public string InvoiceContentID { get { return GetFormValue(INVOICE_CONTENT_ID_PARAM); } } //操作类别 public string Action { get { return GetFormValue(ACTION_PARAM); } } //订单相关 public string IsNeedBlock { get { return GetFormValue(IS_NEED_BLOCK_PARAM); } } #region add by hanlihui 2011-07-04 //充值客户信息相关 public string HasCusmInfo { get { return GetFormValue(HASCUSMINFO_PARAM);} } public string RealName { get { return GetFormValue(REALNAME_PARAM); } } public string IdCard { get { return GetFormValue(IDCARD_PARAM); } } public string MobilePhone { get { return GetFormValue(MOBILEPHONE_PARAM); } } public string AreaCode { get { return GetFormValue(AREACODE_PARAM); } } public string Telephone { get { return GetFormValue(TELEPHONE_PARAM); } } public string TelExtension { get { return GetFormValue(TELEXTENSION_PARAM); } } #endregion //是否繁体 public string IsBig5 { get { return GetFormValue(IS_BIG5); } } public int TicketType { get { return Convert.ToInt32(GetFormValue(TICKET_TYPE)); } } public string InvoiceContent { get { return GetFormValue(INVOICE_CONTENT); } } #endregion
通过NameValueCollection来保存窗体类,来处理异步请求.