在ASP.NET MVC 3的后期动作中获取URL

时间:2012-04-17 09:46:57

标签: asp.net-mvc asp.net-mvc-3 url razor http-post

我有2个索引操作发布并在我提交表单时获取Post Action返回:

return RedirectToAction("Index");

修改

我的获取索引操作可以获得一些参数来支持搜索并过滤返回的List。像这样:

public ActionResult Index(string search = "", long searchItem = 0, long RC = 0, long Page = 1)

我使用了Paged List,并且有一个DropDownList显示每页的行数,我编写了一个jquery脚本来更改此下拉列表form.submited以及表单提交时 在RedirectTAction我丢失了以下参数代码:

[HttpPost]
public ActionResult Index(FormCollection collection, string search = "") {

    long RowCount = 0;
    long.TryParse(string.Format("{0}", collection["RowCount"]), out RowCount);

//More implement

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

那么有没有办法在Post Action中获取Url或url参数?在这种情况下你有什么建议?

1 个答案:

答案 0 :(得分:1)

您可以在重定向之前捕获RouteValueDictionary中的所有查询字符串参数:

var query = new RouteValueDictionary(
    Request
        .QueryString
        .Keys
        .OfType<string>()
        .ToDictionary(key => key, key => (object)Request.QueryString[key])
);
return RedirectToAction("Index", query);

这只会保留查询字符串参数。如果要添加路由值和POSTed值,可以将它们连接到结果。