Beispiel #1
0
 public override void ProcessRequest(HttpContext context)
 {
     if (this.AjaxEnabled && !string.IsNullOrWhiteSpace(this.AjaxKey)) {
         var tryToCallAjax = context.Request.Form.AllKeys.Contains(this.AjaxKey) || context.Request.QueryString.AllKeys.Contains(this.AjaxKey);
         if (tryToCallAjax) {
             var ajaxMethod = (context.Request[this.AjaxKey] ?? string.Empty).Trim();
             if (string.IsNullOrWhiteSpace(ajaxMethod)) {
                 context.WriteError("try to call an ajax method, but didn't pass a method name.");
                 return;
             }
             var method = this.GetType().GetMethod(ajaxMethod);
             if (method == null) {
                 context.WriteError(string.Format("no operatoin like \"{0}\" exists", ajaxMethod));
                 return;
             }
             var validators = method.GetCustomAttributes(typeof(HttpValidationAttribute), true) as HttpValidationAttribute[];
             if (validators != null && validators.Any()) {
                 foreach (var v in validators) {
                     try {
                         v.Validate();
                     } catch (InvalidRequestException e) {
                         context.WriteError(e.Message);
                         return;
                     }
                 }
             }
             try {
                 var result = method.Invoke(this, null);
                 context.WriteOk(result);
             } catch (Exception e) {
                 context.WriteError(e.InnerException.Message);
             }
             return;
         }
     }
     base.ProcessRequest(context);
 }