2016-09-11 2 views
1

사용자가 등록을 마쳤을 때 팝업 메시지 (성공 또는 오류)를 만들기 위해 열심히 노력하고 있습니다. 그래서 AccountController에서 나는 ViewBag을 만들었지 만, 즉시 Login으로 리디렉션되기 때문에 메시지가 나타나지 않거나 갑자기 나타나지 않는 것으로 나타났습니다.등록 후 ASP.NET Entity Framework 성공 메시지

어떻게 메시지를 표시합니까?

public async Task<ActionResult> Register(RegisterViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     .... 
     ViewBag.message= "Registered Successfully"; 

     return RedirectToAction("Login", "Account"); 
    } 
} 

_Layout보기 :

<div class="container body-content">  
    @if (ViewBag.message!= null) 
    { 
     if (ViewBag.message.Equals("Registered Successfully")) 
     {     
      <div class="alert alert-success fade in"> 
       <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
       <strong>Success!</strong> @ViewBag.message 
      </div> 
     } 
    } 
    @RenderBody()    
</div>  
+3

'ViewBag'가 데이터를 전달하는 것입니다 보기에 컨트롤러가 있지만 재실행하는 경우 direct ('ViewBag'는 지워짐). 메서드에 메시지를 경로 값으로 전달하거나 'TempData'를 사용하십시오. –

+0

부트 스트랩 경고 대신 간단한 span 요소를 사용하십시오. 작동하면 부트 스트랩 경고가 문제입니다. 그리고 @stephen은 정확합니다. 한 페이지에서 다른 페이지로 리디렉션하는 경우 TemData 사용 –

+0

TempData를 사용하여 부트 스트랩 플래시 메시지를 원할 경우 https://www.nuget.org/packages/Santhos.Web.Mvc.BootstrapFlashMessages/ 내 솔루션을 사용해보십시오. – Santhos

답변

4

당신은 당신의보기에서 대신 ViewBag

if (ModelState.IsValid) 
{ 
    TempData["Message"] = "Registered Successfully"; 
    return RedirectToAction("Login", "Account"); 
} 

의 TempData를 사용할 수 있습니다 :

<div class="container body-content">  
@if (TempData["Message"] != null) 
{ 
... 
} 
@RenderBody()    
</div> 
관련 문제