2017-05-04 14 views
-1

TempData["Something"]については、Somethingのすべてのコンテンツをカスタマイズしたいので問題があります。以下は私のコードです:TempDataに定義がありません

コントローラ

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<IActionResult> SaveLoanContract(ModelLoan lc, string message) 
    { 
     var myList = new ModelLoan(); 
     var countLoan = _Context.LoanContract.Count(c => c.EmployeeId == lc.loanContract.EmployeeId && c.LoanTypeId == lc.loanContract.LoanTypeId); 

      if (ModelState.IsValid) 
      { 

       //Some Logic 
       TempData["SuccessMessage"] = new { CssClassName = "alert-success", Title = "Success!", Message = "You have successfully applied. Please wait for confirmation. Thank you!" }; 

       return RedirectToAction("Index"); 
      } 
    } 

ビュー:

@if(TempData["SuccessMessage"] != null) 
 
{ 
 
    <div class="alert @TempData["SuccessMessage"].CssClassName"> 
 
     <strong>@TempData["SuccessMessage"].Title</strong> @TempData["SuccessMessage"].Message 
 
    </div> 
 

 
}

しかし、私はいくつかのオブジェクトCssClassNameTitleにエラーが発生しました、 MessageTempData["SuccessMessage"]と私はまだ考えていない。私はこれを修正する小さなトリックがあることを知っています。誰かがこれで私を助けることができますか?ありがとう!

+0

あなたの答えはhttp://stackoverflow.com/questions/15908189 –

+0

で見つけてください。1. W帽子のエラーはあなたが得たか? 2.コントローラーはビューの関心事であるため、 'CSS'クラスを決めるべきではありません。 3.コントローラーは、ビューに関係するため、ユーザーに表示するエラーメッセージを決定してはいけません。 4.モデルをビューに渡してから、表示するCSSとメッセージを決定します。 – CodingYoshi

答えて

1

あなたはTempDataに匿名型を格納することはできませんが、あなたがクラスを作成し、アクション

TempData["SuccessMessage"] = new ClsMsg { CssClassName = "alert-success", Title = "Success!", Message = "You have successfully applied. Please wait for confirmation. Thank you!" }; 

やビューの中でこの

public class ClsMsg 
{ 
      public string CssClassName { get; set; } 
      public string Title { get; set; } 
      public string Message { get; set; } 

} 

のようにクラスにtempdataに変換することができます

@if (TempData["SuccessMessage"] != null) 
{ 

    ClsMsg msg = TempData["SuccessMessage"] as ClsMsg; 


    <div class="alert @msg.CssClassName"> 
     <strong>@msg.Title</strong> @msg.Message 
    </div> 


} 
関連する問題