2014-11-24 7 views
3

Может отображать модальное диалоговое окно внутри контроллера.MVC: показать Модальное диалоговое окно от контроллера

, например:

[HttpPost] 
     public ActionResult Index(int contractType) 
     { 
      if (contractType == 0) 
      { 
       return "SHOW MODALDIALOG BOX" with button "YES" and "NO" when click "YES" Refirect to nexe page, click "NO" stay in current page 
      } 
      else 
      { 
       return View(); 
      } 
     } 

спасибо за ответы

ответ

3

От контроллера (сервер) не может показывать всплывающее окно. Что вы можете сделать, это вернуть представление ... с некоторым флагом, чтобы VIEW отображал модальный диалог javascript.

Другая опция возвращает JSON вместо представления ... и создает модальное диалоговое окно с использованием JS. Затем ... на clic YES, вы можете вызвать одно и то же действие контроллера с другим параметром (в вашем случае что-то другое, что «0»), и на этот раз отобразить представление.

Пример:

[HttpPost] 
    public ActionResult Registering() 
    { 

     string RetResult = new UserPermission().ValidateUser(Request["username"].ToString(), Request["password"].ToString()); 

     if (!string.IsNullOrEmpty(RetResult)){ 
      ViewBag.MyErrorMessage = RetResult; 
      return View(); //This will show the view named "Registering", but you can display any other. 
//The ideal is display the same one where the user entered the user/pass. 
     } 
     else { 
      return RedirectToAction("Index", "EvalMain"); 
     } 
    } 

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

@if(ViewBag.MyErrorMessage != null){ 
    //Display the error message 
    //You can: display it in a div (without popup), you can show a javascript Alert(), or display a modal dialog.  
} 

Чтобы отобразить его в виде DIV просто сделать:

<div>@ViewBag.MyErrorMessage </div> 

Для отображения Alert():

<script> alert(@ViewBag.MyErrorMessage);</script> 

Чтобы отобразить Modal Dialog, вы можете использовать jQueryUI: http://jqueryui.com/dialog/ более или менее что-то вроде этого:

<div id="dialog" title="Error Registering"> 
<p>@ViewBag.MyErrorMessage</p> 
</div> 

<script> 
    $(function() { 
    $("#dialog").dialog(); 
    }); 
</script> 
+0

Пожалуйста, покажите мне пример. – PaataPP

+0

ОК, но расскажите мне немного больше о логике, которую вы пытаетесь выполнить ... Какова идея модального диалога? Что вы показываете в представлении? – Romias

+0

Спасибо за ответы. Идея очень проста. У меня есть служба eMemberShip WCF, которые принимают ussername и пароль и возвращают роль пользователя и разрешения. Если имя пользователя или пароль не верны, возвращаемая служба возвращает строку Error, и я хочу показать ModalDialog с этой строкой ошибки, а не перенаправить на другую страницу. – PaataPP

0

Спасибо за ответы , Идея очень проста. Я запускаю службу eMemberShip WCF, которая принимает имя пользователя и пароль, а также возвращает роль пользователя и разрешения. Если имя пользователя или пароль не верны, возврат службы Ошибка строки, и я хочу показать ModalDialog с этой строкой ошибки, а если нет, то переадресуйте другую страницу.

[HttpPost] 
    public ActionResult Registering() 
    { 

     string RetResult = new UserPermission().ValidateUser(Request["username"].ToString(), Request["password"].ToString()); 



     if (!string.IsNullOrEmpty(RetResult)) 
      return this.ModalDialog(RetResult); 

     else 
      return RedirectToAction("Index", "EvalMain"); 
    } 
Смежные вопросы