从一个动作过关模式,在同一个控制器的另一个行动 [英] pass model from one action to another action in same controller

查看:248
本文介绍了从一个动作过关模式,在同一个控制器的另一个行动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过我的模型名单,LT; Models.Statement>语句列表从一个动作到另一个但我在第二控制器接收空值。请建议什么是错在这里。即使尝试:

 返回RedirectToAction(WriteInTemplate,新的{语句列表=语句列表});

请帮忙。

 公众的ActionResult SendPdfStatement(字符串InvoiceNumber)
    {
        尝试
        {
            InvoiceNumber = InvoiceNumber.Trim();            ObjectParameter [] =参数新ObjectParameter [1];
            参数[0] =新ObjectParameter(InvoiceNumber,InvoiceNumber);            清单< Models.Statement>语句列表=新的List< Models.Statement>();
            语句列表= _db.ExecuteFunction< Models.Statement>(uspInvoiceStatement,参数).ToList< Models.Statement>();            // WriteInTemplate(语句列表);
            返回RedirectToAction(WriteInTemplate,语句列表);        }
        赶上(例外五)
        {
            InvoiceSearchTool.Models.udtExceptionTable例外=新udtExceptionTable();
            exception.MethodName =SendPdfStatement;
            exception.Exception = e.ToString();
            exception.Date = DateTime.Now;
            DYNAMICS_EXTEntities DB =新DYNAMICS_EXTEntities();
            db.AddToudtExceptionTables(例外);
            db.SaveChanges();
            返回视图(错误);
        }
    }    公众的ActionResult WriteInTemplate(列表< Models.Statement>语句列表)
    {
        尝试
        {
            。字符串invoiceNumber = statementList.FirstOrDefault()Invoice.ToString()修剪();
        ...................剪断..........
            返回RedirectToAction(CreateMessageWithAttachment,电子邮件,invoiceNumber);
        }
        赶上(例外五)
        {
            InvoiceSearchTool.Models.udtExceptionTable例外=新udtExceptionTable();
            exception.MethodName =WriteInTemplate;
            exception.Exception = e.ToString();
            exception.Date = DateTime.Now;
            DYNAMICS_EXTEntities DB =新DYNAMICS_EXTEntities();
            db.AddToudtExceptionTables(例外);
            db.SaveChanges();            返回视图(错误);
        }    }


解决方案

请看看<一个href=\"http://stackoverflow.com/questions/18963704/passing-model-through-redirectaction-is-null#18963758\">here通过模型

你不及格语句列表,而是要传递新的{语句列表=语句列表}只是通过模型,你应该罚款。

 返回RedirectToAction(WriteInTemplate,语句列表);

由中美答案

I am trying to pass my model List< Models.Statement > statementList from one action to another but i am receiving null value in the 2nd controller. Please suggest what is wrong here. Even tried with:

return RedirectToAction("WriteInTemplate", new { statementList = statementList });

Please help.

    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");
        }

    }

解决方案

Please take a look here to pass your Model

you are not passing "statementList" , instead you are passing new { statementList= statementList} just pass the model and you should be fine .

return RedirectToAction("WriteInTemplate", statementList);

Answer by sino

这篇关于从一个动作过关模式,在同一个控制器的另一个行动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆