使用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,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; //... }
- 要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例
- 剃刀 – 使用foreach,每隔n项插入html
- 如何从ASP.NET MVC解决方案调用外部URL
- 在ASP.NET中使用dependency injection和工厂模式传递服务
- 从ViewModel获取属性
- FormsAuthentication和WebSecurity之间的区别
- 无法在entity framework中调用DeleteObject – 缺少程序集引用?
- 实体类型IdentityUser不是当前上下文的模型的一部分
- 是否可以在控制器之外获得ModelState.IsValidfunction?