2017-05-04 43 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!" }; 

,并在视图转换tempdata到类像这样

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

} 

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

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


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


} 
相关问题