2016-09-11 4 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

Вы можете использовать TempData вместо ViewBag

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

На ваш взгляд:

<div class="container body-content">  
@if (TempData["Message"] != null) 
{ 
... 
} 
@RenderBody()    
</div> 
Смежные вопросы