使用RedirectToAction-MVC将信息传递给另一个动作

| 我有这个动作:
    public ActionResult Report(AdminReportRequest reportRequest, FormCollection formVariables)
    {
        AdminEngine re = new AdminEngine();

        AdminReport report = re.GetCompleteAdminReport(reportRequest);

        return View(report);
    }
我想知道如何通过AdminReportRequest和FormCollection变量重定向到同一控制器中的另一个动作? 我有这样的想法:
    public ActionResult EarningsSalesReport(AdminReportRequest reportRequest, FormCollection formVariables)
    {
        if (!reportRequest.Download)
        {
            AdminEngine re = new AdminEngine();

            AdminReport report = re.GetCompleteAdminReport(reportRequest);

            return View(report);
        }

        return RedirectToAction(\"ExcelSalesReport\", reportRequest, formVariables);

    }

    public FileResult ExcelSalesReport(AdminReportRequest reportRequest, FormCollection formVariables)
    {
        AdminEngine re = new AdminEngine();

        Stream SalesReport = re.GetExcelAdminReport(reportRequest);

        return new FileStreamResult(SalesReport, \"application/ms-excel\")
        {
            FileDownloadName = \"SalesReport\" + DateTime.Now.ToString(\"MMMM d, yyy\") + \".xls\"
        }; 
    }
这显然是错误的,并引发了一些错误,例如:   \'System.Web.Mvc.Controller.RedirectToAction(string,   串,   System.Web.Routing.RouteValueDictionary)\'   有一些无效的论点 和   参数3:无法从中转换   \'System.Web.Mvc.FormCollection \'到   \'System.Web.Routing.RouteValueDictionary \' 如果有人可以向我指出正确的方向,我将不胜感激,我想我可能必须编辑Global.asax文件,但是我对此不太熟悉。 谢谢。     
已邀请:
您可以使用TempData对象。   TempData属性值存储在会话状态中。设置TempDataDictionary值后调用的任何操作方法都可以从对象获取值,然后对其进行处理或显示。 TempData的值将一直保留,直到被读取或会话超时为止。 这篇MSDN文章解释了这一切。
public ActionResult EarningsSalesReport(AdminReportRequest reportRequest, FormCollection formVariables)
{
   //...
   TempData[\"Report\"] = reportRequest;  //store to TempData
   //...
}

public FileResult ExcelSalesReport(AdminReportRequest reportRequest, FormCollection formVariables)
{
  //...
  var report = TempData[\"Report\"] as AdminReportRequest;
  //...
}
    

要回复问题请先登录注册