这阶段在做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来保存窗体类,来处理异步请求.