一尘不染

如何在ASP.NET MVC中进行RedirectToAction而不丢失请求数据

c#

使用ASP.NET MVC,在某些情况下(例如,表单提交)可能需要输入RedirectToAction

一种这样的情况是,您在提交表单后遇到验证错误,并且需要重定向回表单,但希望该URL反映表单的URL,而不是表单提交的操作页面。

由于我需要表单包含原始POSTed数据,为了用户方便以及验证的目的,如何将数据通过RedirectToAction()?如果使用viewData参数,则我的POST参数将更改为GETparameter。


阅读 283

收藏
2020-05-19

共1个答案

一尘不染

解决方案是使用TempData属性存储所需的Request组件。

例如:

public ActionResult Send()
{
    TempData["form"] = Request.Form;
    return this.RedirectToAction(a => a.Form());
}

然后,您可以在“表单”操作中执行以下操作:

public ActionResult Form()
{
    /* Declare viewData etc. */

    if (TempData["form"] != null)
    {
        /* Cast TempData["form"] to 
        System.Collections.Specialized.NameValueCollection 
        and use it */
    }

    return View("Form", viewData);
}
2020-05-19