我有两个形式每页申报行其中之一的视图。 在行动后,我需要我的地址是相同的,只是添加新的参数。 在我现在用这样的:
[HttpPost]
public ActionResult Index(FormCollection collection) {
//Calculate Row Count
return RedirectToAction("Index", new { RC = RowCount });
}
这个实现我所有的参数丢失,只是RC = rowcountnumber
取代。 我怎样才能保持参数,只是增加新的RC
呢? 是什么做的最快的方法? 任何性能问题吗?
检查这个,我不知道是最快或约性能问题,但工作:
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);
不幸的是我现在不能测试,但我怀疑这会工作(虽然它发生变异集合参数)。 它会表现良好,因为它不复制从旧集合中的任何物品; 只是增加一个项目到它。
[HttpPost]
public ActionResult Index(FormCollection collection)
{
//Calculate Row Count
collection.Add("RC", RowCount);
return RedirectToAction("Index", collection);
}
使表单GET
不是POST
,因为请求不改变服务器上的任何东西,所以GET
动词是比较合适的,也是GET
动词会把所有的表单值作为查询字符串参数,所以你会得到预期的效果
要做到这一点在Html.BeginForm
第三个参数应该是FormMethod.Get