public override void OnActionExecuting(ActionExecutingContext filterContext) { Dictionary <string, object> decryptedParameters = new Dictionary <string, object>(); if (HttpContext.Current.Request.QueryString.Get("q") != null) { string encryptedQueryString = HttpContext.Current.Request.QueryString.Get("q"); string decrptedString = EncriptadorExtensions.DecryptText(encryptedQueryString.ToString()); string[] paramsArrs = decrptedString.Split('?'); for (int i = 0; i < paramsArrs.Length; i++) { string[] paramArr = paramsArrs[i].Split('='); decryptedParameters.Add(paramArr[0], paramArr[1]); } } for (int i = 0; i < decryptedParameters.Count; i++) { filterContext.ActionParameters[decryptedParameters.Keys.ElementAt(i)] = decryptedParameters.Values.ElementAt(i); } base.OnActionExecuting(filterContext); }
public static MvcHtmlString EncodedActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes) { string vQueryString = string.Empty; string vHtmlAttributesString = string.Empty; string vAreaName = string.Empty; string vControllerName = string.IsNullOrEmpty(controllerName) ? htmlHelper.ViewContext.RouteData.Values["controller"].ToString() : controllerName; var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext); if (routeValues != null) { RouteValueDictionary d = new RouteValueDictionary(routeValues); for (int i = 0; i < d.Keys.Count; i++) { string elementName = d.Keys.ElementAt(i).ToLower(); if (elementName == "area") { vAreaName = Convert.ToString(d.Values.ElementAt(i)); continue; } if (i > 0) { vQueryString += "?"; } vQueryString += d.Keys.ElementAt(i) + "=" + d.Values.ElementAt(i); } } if (htmlAttributes != null) { RouteValueDictionary d = new RouteValueDictionary(htmlAttributes); for (int i = 0; i < d.Keys.Count; i++) { vHtmlAttributesString += " " + d.Keys.ElementAt(i) + "=" + d.Values.ElementAt(i); } } StringBuilder ancor = new StringBuilder(); ancor.Append("<a "); if (!string.IsNullOrEmpty(vHtmlAttributesString)) { ancor.Append(vHtmlAttributesString); } ancor.Append(" href='"); if (!string.IsNullOrEmpty(vAreaName)) { ancor.Append("/" + vAreaName); } if (!string.IsNullOrEmpty(vControllerName)) { ancor.Append("/" + vControllerName); } if (actionName != "Index") { ancor.Append("/" + actionName); } if (!string.IsNullOrEmpty(vQueryString)) { ancor.Append("?q=" + EncriptadorExtensions.EncryptText(vQueryString)); } ancor.Append("'"); ancor.Append(">"); ancor.Append(linkText); ancor.Append("</a>"); return(new MvcHtmlString(ancor.ToString())); }