2014-12-02 38 views
3

在MVC 5.2.2中,我需要通過將表單中的值發送到Web服務來處理數據。雖然這樣做需要一些時間從網絡服務獲取狀態並返回到新視圖。同時我需要顯示請等待,以防止用戶重複提交。如何顯示請等待MVC 5中的表單發送消息,直到控制器返回視圖

public ActionResult PopulateHistory(HistoryModel history) 
{ 
    try 
    { 
     string policyNumber = history.product.Split(',')[0]; 
     string productCode = history.product.Split(',')[1]; 
     string startDate = code; 
     string endDate = (DateTime.UtcNow).ToString("yyyy-MM-dd"); 
     Container historyContainer =_History.CreateBusinessObject_History 
     (policyNumber,productCode,endDate,startDate); 
     //Getting history from webservice 
     DataTable historyGridview =_History.GethistoryValues 
     (historyContainer); 
     return View(historyGridview); 
    } 
    catch (Exception ex) 
    { 
     SemanticLogger.Log.Error(ex.ToString()); 
     return View(ex.ToString()); 
    } 
} 
+1

我認爲你應該看看阿賈克斯。 – th1rdey3 2014-12-02 13:03:38

+0

[鏈接] http://stackoverflow.com/questions/24661606/loading-please-wait-pop-up-in-mvc-view我試過這一個不起作用。 – 2014-12-02 15:04:28

+0

顯示調用服務的代碼 – 2014-12-02 22:48:31

回答

0

如果你只關心展示AJAX等待消息,我覺得你可以在下面的方式做:

第1步: 包括以下腳本:

<script src="~/Scripts/jquery-1.8.2.min.js"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

步驟2: 檢查web.config中的以下按鍵:

<add key="webpages:Enabled" value="false" /> 
<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

第3步: 現在你是好使用下面的代碼:

@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", LoadingElementId = "please-wait" })) 
    {     
     <div id="please-wait" style="display: none;"> 
      <div class="modal"></div> 
      <div class="spinner">Loading...</div> 
     </div> 
     <input type="submit" value="Submit" /> 
    } 

我用在我的控制器下面的代碼檢查的話:

 [HttpPost] 
     public ActionResult Index() 
     { 
      Thread.Sleep(3000); 
      return View(); 
     } 

第4步:

您可以將css應用於加載內容爲p呃你的要求。我做了以下:

<style> 
      #please-wait { 
       position: absolute; 
       left: 0; 
       top: 0; 
       width: 100%; 
       height: 100%; 
      } 

       #please-wait .modal { 
        z-index: 1999; 
        left: 0; 
        top: 0; 
        width: 100%; 
        height: 100%; 
        opacity: 0.5; 
        -moz-opacity: 0.5; 
        background-color: black; 
        margin-left: 0; 
       } 

       #please-wait .spinner { 
        z-index: 2000; 
        position: absolute; 
        padding-top: 20px; 
        padding-left: 20px; 
        background: #E5E5E5 no-repeat 15px center; 
        width: 120px; 
        height: 40px; 
        border: 2px solid #666; 
        font-weight: bold; 
        text-align: center; 
        margin-left: auto; 
        margin-right: auto; 
        top: 35%; 
        display: block; 
       } 
    </style> 
+0

我試過上面的方法,它不起作用 – 2014-12-03 14:26:16

+0

這是因爲你缺少一些東西。我在我的最後嘗試,它工作正常。 – Saket 2014-12-04 05:47:25

+0

其未觸及控制器 – 2014-12-11 10:06:28

相關問題