2017-04-25 72 views
0

我的問題在於我的代碼。我的ViewBag.Message不工作,我不知道爲什麼它沒有顯示在我的網頁上,最終它沒有將我重定向到索引並卡在我的當前控制器上。這裏是我的代碼:ViewBag.Message不能正常工作

控制器

public IActionResult AddPayments() 
    { 
     try 
     { 
      var sqlQuery = "INSERT INTO LoanPayments (LoanID, DateOfPayment, AmountOfPayment, Remarks) " + 
      "SELECT lc.LoanID, " + 
      " CONVERT(DATE, GETDATE(), 101), " + 
      " ISNULL(CAST(((lt.InterestRate/100) * lc.LoanAmount) + lc.LoanAmount/((dbo.fnNumberOfYears(CONVERT(VARCHAR(15), LoanDateStart, 101), CONVERT(VARCHAR(15), LoanPaymentDue, 101)) * 12) * 2) AS DECIMAL(18,2)), 0), " + 
      " 'Loan Ledger Created For ' + CAST(GETDATE() AS VARCHAR(50)) " + 
      " FROM LoanContract lc " + 
      " INNER JOIN LoanType lt ON lt.LoanTypeID = lc.LoanTypeID "; 
      _Context.Database.ExecuteSqlCommand(sqlQuery); 

      ViewBag.Message = "Has successfully created payments today."; 

      return RedirectToAction("Index"); 
     } 
     catch (Exception) 
     { 

      throw; 
     } 
    } 

    public IActionResult Index() 
    { 
     return View(); 
    } 

查看

<h2>Create Payment</h2> 
 
<span>@ViewBag.Message</span> 
 
<a asp-controller="Payment" asp-action="AddPayments" class="btn btn-primary">Secondary</a>

任何幫助,將不勝感激!

+0

http://stackoverflow.com/questions/7756464/how-do-i-render-html-from-the-viewbag-using-mvc3-razor –

+0

嗨@BobSwager我試過了,但它也不起作用...並且它似乎沒有在html中呈現任何東西。 –

+0

您必須從AddPayments()返回視圖。不要將其重定向到索引。 –

回答

1

使用TempData而不是ViewBag,它會保留在重定向...但是正如人們在評論中指出的 - 這是一個壞主意,你應該重構你的代碼,以避免這樣做...

更好的想法是通過消息作爲RouteValue到索引視圖,但這又不是很乾淨,所以如果我是你,我會重構......

編輯(簡化的例子):

public IActionResult AddPayments() 
    { 
     try 
     { 
      ... // Omitted 

      return RedirectToAction("Index", "Home", new { message = "Has successfully created payments today."); 
     } 
     catch (Exception) 
     {  
      throw; 
     } 
    } 

    public IActionResult Index(String message) 
    { 
     return View((Object) message); 
    } 

然後在你的索引視圖 - 你做@Model顯示消息。

注意:理想情況下,你會將它包裝在ViewModel中,而不是傳遞裸露的字符串,但希望這可以給你正確的想法?

+0

可以發佈一些引用或示例代碼來實現重構?這將是一個很大的幫助! –

+0

@AlvinQuezon請參閱編輯。簡化爲不完整的時間,但希望你看到想法 – Milney

+0

謝謝!這工作! –