2014-11-24 60 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> 

時顯示一個警告():

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

要顯示一個模式對話框,您可以使用jQueryUI的:http://jqueryui.com/dialog/ 或多或少是這樣的:

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

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

請給我看一些例子。 – PaataPP 2014-11-25 08:24:18

+0

好的,但請告訴我更多關於您正試圖完成的邏輯......模態對話框的想法是什麼?你在視圖中顯示什麼? – Romias 2014-11-25 12:31:21

+0

感謝您的回答。這個想法非常簡單。我已經運行eMemberShip WCF服務,它接受ussername和password並返回用戶角色和權限。如果用戶名或密碼不正確,服務返回錯誤字符串,並且我想用此錯誤字符串顯示ModalDialog,而不是重定向到其他頁面。 – PaataPP 2014-11-25 13:09:31

0

感謝答案。這個想法很簡單。我正在運行eMemberShip WCF服務,它接受ussername和password並返回用戶角色和權限。 如果用戶名或密碼不正確,服務返回錯誤字符串,並且比我想顯示帶有此錯誤字符串的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"); 
    } 
相關問題