public override void Execute(RequestContext context) { JavaScriptSerializer jss = new JavaScriptSerializer(); var json = jss.Serialize(paraObj); context.HttpContext.Response.Write(json); context.HttpContext.Response.ContentType = "application/json"; }
public override void Execute(RequestContext context) { var velocity = new VelocityHelper(string.Format("~/Views/{0}/", context.RouteData["controller"].ToString())); // 绑定实体model velocity.Put("model", this.model); // 显示具体html velocity.Display(string.Format("{0}.html", context.RouteData["action"].ToString())); // 设置响应头类型 context.HttpContext.Response.ContentType = "text/html"; }
public virtual ActionResult Execute(RequestContext context) { this.Context = context.HttpContext; this.RouteData = context.RouteData; // 获取ActionName var actionName = RouteData["action"].ToString(); if (string.IsNullOrEmpty(actionName)) { //actionName = RouteData["defaults"]; } // 先找到当前类中的所有方法 var methods = this.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); MethodInfo method = null; foreach (var item in methods) { if (item.Name.Equals(actionName, StringComparison.InvariantCultureIgnoreCase)) { method = item; break; } } // 如果没有找到指定的action方法 if (method == null) { throw new HttpException(404, "Not Found"); } List<object> values = new List<object>(); var parameters = method.GetParameters(); foreach (var parameter in parameters) { var name = parameter.Name; var type = parameter.ParameterType; // 参数来源:1.Form表单 2.QueryString 3.RouteData var value = Context.Request[name]; if (string.IsNullOrEmpty(value)) { value = RouteData.ContainsKey(name) ? RouteData[name].ToString() : null; } if (!string.IsNullOrEmpty(value)) { // 值类型转换 values.Add(Convert.ChangeType(value, type)); } else { values.Add(null); } } ActionResult result = method.Invoke(this, values.ToArray()) as ActionResult; return result; }
public void ProcessRequest(HttpContext context) { var controllerName = routeData["controller"].ToString(); // 借助控制器工厂创建具体控制器实例 IController controller = DefaultControllerFactory.CreateController(controllerName); // 确保有找到一个Controller处理请求 if (controller == null) { // 404 Not Found! throw new HttpException(404, "Not Found"); } // 封装请求 var requestContext = new RequestContext { HttpContext = context, RouteData = routeData }; // 开始执行 var result = controller.Execute(requestContext); result.Execute(requestContext); }
public abstract void Execute(RequestContext context);
public override void Execute(RequestContext context) { context.HttpContext.Response.Write(content); context.HttpContext.Response.ContentType = contentType; }