How do you persist querystring values in asp.net mvc?

前端 未结 4 1774
独厮守ぢ
独厮守ぢ 2021-01-01 21:24

What is a good way to persist querystring values in asp.net mvc?

If I have a url: /questions?page=2&sort=newest&items=50&showcomments=1&search=abcd

4条回答
  •  猫巷女王i
    2021-01-01 22:04

    i use a extension method for that:

    public static string RouteLinkWithExtraValues(
            this HtmlHelper htmlHelper,
            string name,
            object values)
        {
            var routeValues = new RouteValueDictionary(htmlHelper.ViewContext.RouteData.Values);
    
            var extraValues = new RouteValueDictionary(values);
            foreach (var val in extraValues)
            {
                if (!routeValues.ContainsKey(val.Key))
                    routeValues.Add(val.Key, val.Value);
                else
                    routeValues[val.Key] = val.Value;
            }
    
            foreach (string key in htmlHelper.ViewContext.HttpContext.Request.Form)
            {
                routeValues[key] = htmlHelper.ViewContext.HttpContext.Request.Form[key];
            }
    
            foreach (string key in htmlHelper.ViewContext.HttpContext.Request.QueryString)
            {
                if (!routeValues.ContainsKey(key) && htmlHelper.ViewContext.HttpContext.Request.QueryString[key] != "")
                    routeValues[key] = htmlHelper.ViewContext.HttpContext.Request.QueryString[key];
            }
    
            var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
    
            return string.Format("{1}", urlHelper.RouteUrl(routeValues), name);
        }
    

提交回复
热议问题