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);
        }
示例#2
0
        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()));
        }