ASP.NET WebForm???????????Ajax
???????????? ???????[ 2013/4/2 9:53:36 ] ????????
????????????г??????????????????????????????Ajax????????JS?????????????????д?????????Error??Error?????Ч??????????Exception????????????????λ??????????JS????????????JS???п??????????????????????????????????????н??е????????AjaxApplication?????????
public class AjaxApplication
{
private AjaxBasePage m_AjaxBasePage;
private object m_ResponseData;
public AjaxApplication(AjaxBasePage ajaxBasePage?? AjaxRequest ajaxRequest)
{
this.m_AjaxBasePage = ajaxBasePage;
Type ajaxBasePageType = ajaxBasePage.GetType();
MethodInfo methodInfo = ajaxBasePageType.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance)
.FirstOrDefault(item => item.Name == ajaxRequest.MethodName);
object[] parameterData = this.GetParameterData(ajaxRequest?? methodInfo);
if (methodInfo.IsStatic)
{
this.m_ResponseData = methodInfo.Invoke(null?? parameterData);
}
else
{
this.m_ResponseData = methodInfo.Invoke(ajaxBasePage?? parameterData);
}
}
/// <summary>
/// ????????????
/// </summary>
private object[] GetParameterData(AjaxRequest ajaxRequest?? MethodInfo methodInfo)
{
if (methodInfo != null)
{
ParameterInfo[] parameterInfos = methodInfo.GetParameters();
if (parameterInfos.Length > 5)
{
throw new NotSupportedException("?????5??????");
}
if (parameterInfos.Length > ajaxRequest.Parameters.Count)
{
throw new ArgumentException("??????!");
}
List<object> parameterData = new List<object>(parameterInfos.Length);
for (int i = 0; i < parameterInfos.Length; i++)
{
ParameterInfo parameterInfo = parameterInfos[i];
string paramValue = ajaxRequest.Parameters[i];
try
{
parameterData.Add(ParseAjaxParameter(paramValue?? parameterInfo));
}
catch (FormatException)
{
string format = string.Format("????????? {0} ??? {1} ??????0????????????????????????? {2} ???? ???飡"?? methodInfo.Name?? i?? parameterInfo.ParameterType.Name);
throw new FormatException(format);
}
}
return parameterData.ToArray();
}
else
{
throw new InvalidOperationException("??з?????????????÷?????????????????public??");
}
}
/// <summary>
/// ???????????? String??Boolean??Int32??Int64??UInt32??UInt64??Single??Double??Decimal??DateTime??DateTimeOffset??TimeSpan??Guid
/// </summary>
private object ParseAjaxParameter(string ajaxParameterValue?? ParameterInfo parameterInfo)
{
object obj;
if (parameterInfo.ParameterType == typeof(String))
{
obj = ajaxParameterValue;
}
else if (parameterInfo.ParameterType == typeof(Boolean))
{
obj = bool.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(Int32))
{
obj = Int32.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(UInt32))
{
obj = UInt32.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(UInt64))
{
obj = UInt64.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(Single))
{
obj = Single.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(Double))
{
obj = Double.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(Decimal))
{
obj = Decimal.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(DateTime))
{
obj = DateTime.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(DateTimeOffset))
{
obj = DateTimeOffset.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(TimeSpan))
{
obj = TimeSpan.Parse(ajaxParameterValue);
}
else if (parameterInfo.ParameterType == typeof(Guid))
{
obj = Guid.Parse(ajaxParameterValue);
}
else
{
throw new NotSupportedException("?????????????????");
}
return obj;
}
/// <summary>
/// ??????????????????????????ó????????????EndRequest?????
/// </summary>
public void EndRequest()
{
HttpResponse response = this.m_AjaxBasePage.Page.Response;
response.ContentType = "application/json";
response.Clear();
JavaScriptSerializer jsonSerializer2 = new JavaScriptSerializer();
response.Write(jsonSerializer2.Serialize(new JsonResponse { IsSuccess = true?? Message = "??????"?? ResponseData = this.m_ResponseData }));
response.End();
}
}
????????????????AjaxApplication??????????????????EndRequest()????????????Ajax?????÷???????????Response.End()?????????????????????????????????
????????JsonResponse????????????????
public class JsonResponse
{
public bool IsSuccess { get; set; }
public string Message { get; set; }
public object ResponseData { get; set; }
}
??????????????????????????÷???????????????Object?????????????????????κ????????????????????????????л???
????7???????????Ajax??????????????????????
PowerAjax.AsyncAjax('TestAjaxMethod'?? [1?? 2?? "333"?? "sss"]?? function (SucceessResponse) {
if (SucceessResponse.IsSuceess) {
alert("???????ajax???????ó????");
Process(SucceessResponse.ResponseData); // ???????????????????????????????????????????ж????????????????????????Object
} else {
alert("???????????£???????????????????????????????????");
alert("???????:" + SucceessResponse.Message);
}
});
???????????????????????λ????????
??????
![](/images/ad-banner/ad-banner.png)
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11