增值RoutValues和保持当前值在ASP.NET MVC 3(Add Value to Rout

2019-09-16 16:03发布

我有两个形式每页申报行其中之一的视图。 在行动后,我需要我的地址是相同的,只是添加新的参数。 在我现在用这样的:

[HttpPost]
public ActionResult Index(FormCollection collection) {

    //Calculate Row Count

    return RedirectToAction("Index", new { RC = RowCount });

   }

这个实现我所有的参数丢失,只是RC = rowcountnumber取代。 我怎样才能保持参数,只是增加新的RC呢? 是什么做的最快的方法? 任何性能问题吗?

Answer 1:

检查这个,我不知道是最快或约性能问题,但工作:

RouteValueDictionary rt = new RouteValueDictionary();
    foreach(string item in Request.QueryString.AllKeys)
      rt.Add(item,    Request.QueryString.GetValues(item).FirstOrDefault());

  rt.Add("RC", RowCount);
    return RedirectToAction("Index", rt);


Answer 2:

不幸的是我现在不能测试,但我怀疑这会工作(虽然它发生变异集合参数)。 它会表现良好,因为它不复制从旧集合中的任何物品; 只是增加一个项目到它。

    [HttpPost]
    public ActionResult Index(FormCollection collection)
    {
        //Calculate Row Count
        collection.Add("RC", RowCount);
        return RedirectToAction("Index", collection);
    }


Answer 3:

使表单GET不是POST ,因为请求不改变服务器上的任何东西,所以GET动词是比较合适的,也是GET动词会把所有的表单值作为查询字符串参数,所以你会得到预期的效果

要做到这一点在Html.BeginForm第三个参数应该是FormMethod.Get



文章来源: Add Value to RoutValues and keep Current Values in ASP.NET MVC 3