将模型从一个动作传递到同一个控制器中的另一个动作

145*_*446 7 c# model-view-controller asp.net-4.0 asp.net-mvc-3-areas asp.net-mvc-3

我试图将我的模型List <Models.Statement> statementList从一个动作传递到另一个动作但我在第二个控制器中接收空值.请在这里建议有什么问题.甚至试过:

return RedirectToAction("WriteInTemplate", new { statementList = statementList });
Run Code Online (Sandbox Code Playgroud)

请帮忙.

    public ActionResult SendPdfStatement(string InvoiceNumber)
    {
        try
        {
            InvoiceNumber = InvoiceNumber.Trim();

            ObjectParameter[] parameters = new ObjectParameter[1];
            parameters[0] = new ObjectParameter("InvoiceNumber", InvoiceNumber);

            List<Models.Statement> statementList = new List<Models.Statement>();
            statementList = _db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters).ToList<Models.Statement>();

            //WriteInTemplate(statementList);
            return RedirectToAction("WriteInTemplate", statementList );

        }
        catch (Exception e)
        {
            InvoiceSearchTool.Models.udtExceptionTable exception = new udtExceptionTable();
            exception.MethodName = "SendPdfStatement";
            exception.Exception = e.ToString();
            exception.Date = DateTime.Now;
            DYNAMICS_EXTEntities db = new DYNAMICS_EXTEntities();
            db.AddToudtExceptionTables(exception);
            db.SaveChanges();  
            return View("Error");
        }
    }

    public ActionResult WriteInTemplate(List<Models.Statement> statementList)
    {
        try
        {
            string invoiceNumber = statementList.FirstOrDefault().Invoice.ToString().Trim();
        ...................snip..........


            return RedirectToAction("CreateMessageWithAttachment", "email", invoiceNumber); 
        }
        catch (Exception e)
        {
            InvoiceSearchTool.Models.udtExceptionTable exception = new udtExceptionTable();
            exception.MethodName = "WriteInTemplate";
            exception.Exception = e.ToString();
            exception.Date = DateTime.Now;
            DYNAMICS_EXTEntities db = new DYNAMICS_EXTEntities();
            db.AddToudtExceptionTables(exception);
            db.SaveChanges();

            return View("Error");
        }

    }
Run Code Online (Sandbox Code Playgroud)

Ste*_*kes 1

RedirectToAction()向浏览器写入一个重定向命令,使其启动一个全新的请求WriteInTemplate()。您的模型对象因此丢失。

WriteInTemplate()一个独立的操作,有时会负责用户的整个请求或视图的部分请求?如果没有,您应该将其作为常规方法调用,而不是使用RedirectToAction().