/// <summary>将reques请求的参数封装到CorRefEntity对象中 /// </summary> /// <param name="para"></param> /// <param name="request"></param> public static void FillCorRefEntity(RefRequestEntity para, HttpRequest request) { foreach (var key in request.Params.AllKeys) { para.Request.Add(key, request.Params[key]); } }
public RefRespondEntity Index3(RefRequestEntity param) { RefRespondEntity result = new RefRespondEntity(RespondType._String); result.ResultContext = "我是INDEX3乱码"; return(result); }
// // GET: /Demo/ public RefRespondEntity Index(RefRequestEntity param) { RefRespondEntity result = new RefRespondEntity(RespondType._Redirect); result.ResultContext = HuberVariable.CurWebUrl + "/Demo/Index2"; return(result); }
/// <summary> /// 调用Action视图 /// </summary> /// <param name="actionName"></param> /// <param name="controllerName"></param> /// <param name="routeValues">传入参数</param> /// <returns></returns> public IEncodedString Action(string actionName, string controllerName, object routeValues) { RefRequestEntity paras = SetParamValue(routeValues); var t = HuberHttpModule.CurDomainAssembly.GetType(HuberHttpModule.CurDomainAssemblyName + ".Controllers." + controllerName + "Controller"); var m = t.GetMethod(actionName); object dObj = Activator.CreateInstance(t); object result = m.Invoke(dObj, new object[] { paras }); return(new RawString((result as RefRespondEntity).ResultContext.ToString())); }
public RefRespondEntity Index4(RefRequestEntity param) { object AA = param.Request["A"]; object BB = param.Request["B"]; object CC = param.Request["C"]; RefRespondEntity result = new RefRespondEntity(RespondType._String); result.ResultContext = View(); object tt = ViewBag.test; return(result); }
/// <summary> /// 根据model设置传入参数 /// </summary> /// <param name="routeValues"></param> /// <returns></returns> private static RefRequestEntity SetParamValue(object routeValues) { RefRequestEntity paras = new RefRequestEntity(); Type t1 = routeValues.GetType(); PropertyInfo[] pis = t1.GetProperties(); foreach (PropertyInfo pi in pis) { paras.Request.Add(pi.Name, pi.GetValue(routeValues)); } return(paras); }
public RefRespondEntity Index2(RefRequestEntity param) { var o1 = param.Request["qq"]; var o2 = param.Request["addr"]; RefRespondEntity result = new RefRespondEntity(RespondType._String); var M = new TestM() { A = "aaa", B = "gffff", C = "fff" }; M.A = HuberVariable.CurWebDir; ViewBag.abc = "ccc"; ViewBag.test = "my test result"; result.ResultContext = View("Index2", M); return(result); }
private static void Application_BeginRequest(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication; HttpResponse respond = application.Response; HttpRequest request = application.Request; string url = request.Url.AbsolutePath.ToString(); string _action = url.Substring(url.LastIndexOf("/") + 1); if (_action.IndexOf(".") < 0)//过滤非action请求 { string controller = string.Empty; string action = string.Empty; // getUrlPathEntity(url, ref controller, ref action); Plugins plugin = GetPluginModel(url); if (plugin != null) { controller = plugin.ControllerName; action = plugin.ActionName; } if (controller != string.Empty && action != string.Empty) { System.Type t = CurDomainAssembly.GetType(controller, false, true); object dObj = Activator.CreateInstance(t); System.Reflection.MethodInfo method = t.GetMethod(action); RefRequestEntity paras = new RefRequestEntity(); //paras.CurPageRights = userRight;//设置本次请求的用户权限 #region 获取http参数 RequestHandle.FillCorRefEntity(paras, request); #endregion object result = method.Invoke(dObj, new object[] { paras }); RequestHandle.ResposeResult(respond, result); } else { //respond.Write(FilterConfig.CODE404); } } }
// Renders the partial view with a copy of the given view data plus the given model /// <summary> /// 部分视图 /// </summary> /// <param name="partialViewName">部分视图名称</param> /// <param name="controllerName">控制器名称</param> /// <param name="model"> model</param> /// <param name="ViewBag">ViewBag</param> /// <returns></returns> public IEncodedString RenderPartial(string partialViewName, string controllerName, object model, DynamicViewBag ViewBag) { RefRequestEntity paras = SetParamValue(model); var t = HuberHttpModule.CurDomainAssembly.GetType(HuberHttpModule.CurDomainAssemblyName + ".Controllers." + controllerName + "Controller"); var ActionFunc = t.GetMethod(partialViewName); object dObj = Activator.CreateInstance(t); var AddViewBageFunc = t.GetMethod("AddViewBageValues"); foreach (string key in ViewBag.GetDynamicMemberNames()) { AddViewBageFunc.Invoke(dObj, new object[] { key, Impromptu.InvokeGet(ViewBag, key) }); } object result = ActionFunc.Invoke(dObj, new object[] { paras }); return(new RawString((result as RefRespondEntity).ResultContext.ToString())); }
// 请求拦截 private void Application_BeginRequest(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication; HttpResponse respond = application.Response; HttpRequest request = application.Request; string url = request.Url.AbsolutePath.ToString(); //如果请求以“/plugins/”开头,表面我们需要对该请求做拦截处理了。 if (url.ToLower().StartsWith("/plugins/")) { string action = url.Substring(url.LastIndexOf("/") + 1); //如果是非静态文件,即是action if (action.IndexOf(".") < 0) { #region 匹配controller和action var urlEntity = HuberPluginHandle.getUrlPathEntity(url.Substring(8), true); #endregion if (urlEntity != null && urlEntity.controller != null) { #region 获取路径中的插件名称等信息 #endregion SandBoxDynamicLoader sandBox = HuberPluginHandle.getSandBox(urlEntity.pluginname, urlEntity.pluginversion); if (sandBox != null) { List <RightEntity> userRight = new List <RightEntity>(); string uid = string.Empty; int login = new UserBll().chekLogin(ref uid, false, userRight); if (login == 2)//验证用户是否具有访问的权限 { RefRequestEntity paras = new RefRequestEntity(); paras.PageRights = userRight; paras.UserID = uid; #region 获取http参数 RequestHandle.FillCorRefEntity(paras, request); #endregion //sandBox.InvokeMothod(urlEntity.controller, "InitChannel", paras) var result = sandBox.InvokeMothod(urlEntity.controller, urlEntity.action, paras); RequestHandle.ResposeResult(respond, result); } else if (login == 1) { RequestHandle.ResponseNoRight(request, respond); } else { RequestHandle.ResponseNoLogin(request, respond); } } } else { RequestHandle.ResponseNotfound(request, respond);; } respond.End(); } } else { if (!url.ToLower().Equals("/user/login")) { string action = url.Substring(url.LastIndexOf("/") + 1); if (action.IndexOf(".") < 0) { List <RightEntity> userRight = new List <RightEntity>(); string uid = string.Empty; int login = new UserBll().chekLogin(ref uid, false, userRight); if (login == 2)//验证用户是否具有访问的权限 { } else if (login == 1) { RequestHandle.ResponseNoRight(request, respond); } else { RequestHandle.ResponseNoLogin(request, respond); } } } } }