7

モデルList<Models.Statement>statementListをあるアクションから別のアクションに渡そうとしていますが、2番目のコントローラーでnull値を受け取っています。ここで何が悪いのか提案してください。でさえ試しました:

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

助けてください。

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

    }
4

4 に答える 4

1

これは、間違ったルート パラメータを指定したためです。

これについて考えている間..データがnullでないことを確認しましたか?

あなたが使用している

 return RedirectToAction("WriteInTemplate", statementList );

代わりに使用する必要があります

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

こちらを参考に

于 2012-01-30T09:15:12.680 に答える
1

RedirectToAction()ブラウザにリダイレクト コマンドを書き込み、 への新しいリクエストを開始しWriteInTemplate()ます。したがって、モデル オブジェクトは失われます。

WriteInTemplate()ユーザーからのリクエスト全体またはビューからの部分的なリクエストを担当することがある独立したアクションですか? そうでない場合は、 を使用する代わりに通常のメソッドとして呼び出す必要がありますRedirectToAction()

于 2012-01-26T21:07:52.933 に答える