7

Tôi đang cố gắng chuyển mẫu của mình Danh sách < Mô hình.Statement> statementList từ hành động này sang hành động khác nhưng tôi nhận giá trị null trong bộ điều khiển thứ hai. Xin vui lòng đề nghị những gì là sai ở đây. Thậm chí đã thử với:truyền mô hình từ một hành động đến một hành động khác trong cùng một bộ điều khiển

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

Xin vui lòng trợ giúp.

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

    } 
+1

Tại sao không làm trở WriteInTemplate (statementList); thay thế? Bạn có lẽ nên di chuyển các chức năng phổ biến trong một phương pháp khác. –

+0

@amit_g là chính xác. chỉ cần "trả về WriteInTemplate (statementList);" Đó cũng là ActionResult nên nó sẽ hoạt động như mong muốn. –

Trả lời

1

RedirectToAction() viết một lệnh chuyển hướng đến trình duyệt, làm cho nó bắt đầu một thương hiệu yêu cầu mới để WriteInTemplate(). Do đó, đối tượng mô hình của bạn bị mất.

WriteInTemplate() hành động độc lập đôi khi sẽ chịu trách nhiệm cho toàn bộ yêu cầu từ người dùng hoặc một phần yêu cầu từ chế độ xem? Nếu không, bạn chỉ nên gọi nó như là một phương pháp thông thường thay vì sử dụng RedirectToAction().

1

Điều này là do bạn đã xác định sai thông số tuyến đường sai.

trong khi suy nghĩ về điều này .. bạn đã kiểm tra xem dữ liệu có phải là không rỗng không?

bạn đang sử dụng

return RedirectToAction("WriteInTemplate", statementList); 

thay vào đó bạn nên sử dụng

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

thấy tài liệu tham khảo here

+0

Ông nói rằng ông đang ở trong cùng một bộ điều khiển, do đó những gì ông đã có thể đã làm việc và đang sử dụng các thông số chính xác. –

3

Hãy xem here to pass your Model

bạn không đi qua "statementList", thay vì bạn đang đi qua {statementList = sta mới tementList} chỉ cần vượt qua mô hình và bạn sẽ ổn.

return RedirectToAction("WriteInTemplate", statementList); 

trả lời bởi Trung

Các vấn đề liên quan