MVC 3使用修改的查询字符串值重新加载当前页面

and*_*ech 4 querystringparameter asp.net-mvc-3

背景:

我有一个MVC布局(主)视图,它使用@ Html.RenderAction在左侧导航面板中显示下拉列表.此下拉列表将显示在网站的所有页面上.下拉列表包含在表单元素中,并且在下拉列表更改时,表单将被发布.

题:

现在,一旦表单发布,我需要使用查询字符串中附加的下拉列表的值重新加载当前页面的内容(用户当前所在的页面...).这意味着要替换先前选择中查询字符串中可能存在的值.

例:

  1. 用户导航到网站的主页:

网址:/ Home /?dropdownvalue =蓝色

此时,下拉列表显示"蓝​​色"选中.用户将下拉列表中的值更改为"红色".我需要使用以下网址重新加载页面 -

/首页/?dropdownvalue =红

  1. 用户移动到站点中的另一个页面:

网址:/ CustomerFavorite /?dropdown =红色

将下拉列表中的值从"红色"更改为"绿色".

'CustomerFavourite'页面应该在querystring中重新加载'Green'.

我为长篇文章道歉.但是,考虑提供一些额外的信息来澄清问题.

谢谢.

and*_*ech 7

感谢Darin为查询字符串的javascript操作提供了链接.但是,我想要一个服务器端解决方案,所以这就是我实现它的方式 -

public ActionResult _ColorSelection(ColorModel model)
{
    string selectedColor = model.Color.Value;

    // Modify Querystring params...

    NameValueCollection querystring = 
            HttpUtility.ParseQueryString(Request.UrlReferrer.Query); // Parse QS

    // If Querystring contains the 'color' param, then set it to selected value
    if (!string.IsNullOrEmpty(querystring["color"]))
    {
        querystring["color"] = selectedColor;
    }
    else  // Add color key to querystring
    {
        querystring.Add("color", selectedColor);
    }

    // Create new url
    string url = Request.UrlReferrer.AbsolutePath 
                         + "?" + querystring.ToString();

    return Redirect(url); // redirect

}
Run Code Online (Sandbox Code Playgroud)