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)
RedirectToAction()向浏览器写入一个重定向命令,使其启动一个全新的请求WriteInTemplate()。您的模型对象因此丢失。
是WriteInTemplate()一个独立的操作,有时会负责用户的整个请求或视图的部分请求?如果没有,您应该将其作为常规方法调用,而不是使用RedirectToAction().