2011-05-17 46 views
1

如何在執行我的操作時發生異常時顯示帶有信息的div?顯示div以顯示操作錯誤

這是我到目前爲止有:

<div id="dvErrorMsg"> 
    <a href="#" class="close">[x]</a> 
    <p> 
     <label id="errorMessage"> 
     </label> 
    </p> 
</div> 

<script type="text/javascript"> 
     $(function() { 

      $("#click_here").click(function (event) { 
       event.preventDefault(); 
       $("#dvErrorMsg").slideToggle(); 
      }); 

      $("#dvErrorMsg a").click(function (event) { 
       event.preventDefault(); 
       $("#dvErrorMsg").slideUp(); 
      }); 
     }); 
</script> 

而且我在控制這個動作:

public ActionResult Validatecall() 
{ 
    //if any exeption happen show div with the custom error 
} 

我怎樣才能捕捉任何異常,並在AJAX響應消息發送回?

回答

3

您可以嘗試恢復在這種情況下,JavaScriptResult會告訴你的DIV擴大:

public ActionResult Validatecall() 
{ 
    ActionResult result; 
    try 
    { 
     // do whatever 
    } 
    catch (Exception) 
    { 
     result = JavaScript("$('#dvErrorMsg').show();$('#errorMessage').val(/* Put exception message here*/")"); 
    } 
    return result; 
} 

一般來說,我會建議使用這種方式的觀點,你現在互動如解釋here所示,在視圖本身中引入依賴關係。我提供它是做這件事的一種方式,因爲我不知道你是怎麼稱呼這個動作的。

假設你使用的是像後Ajax調用我會返回一個JsonResult表示,如果發生異常,並傳遞錯誤信息回到那條路上去調用這個動作:

$.post("urltoaction", function (result) {  
    if (result.success) 
    { 
     // do whatever 
    } 
    else 
    { 
    //exception occurred show errors 
    $('#dvErrorMsg').show(); 
    $('#errorMessage').val(result.exceptionMsg); 
    } 
}); 

這裏現在是控制器代碼:

public ActionResult Validatecall() 
{ 
     ActionResult result; 
     try 
     { 
      // do whatever 
     } 
     catch (Exception e) 
     { 
      result = new JsonResult() 
        { 
         Data = new { success = false, exceptionMsg = e.Message }, 
         JsonRequestBehavior = JsonRequestBehavior.AllowGet 
        }; 
     } 
     return result; 
} 
+0

我打電話給使用Html.ActionLink的行動,我想知道如何使用ActionLink。謝謝 – 2011-05-19 01:15:09

+0

@Pedro de La Cruz - 然後在我的回答中使用第一個示例,返回javascript。 – amurra 2011-05-19 01:23:49

+0

比利麥克福特的建議呢? – 2011-05-19 01:35:37

0
try { 
    ... whatever 
} catch (Exception $e) { 
    $('errorMessage').html($e); 
} 
+0

此代碼在行動? – 2011-05-17 00:08:54

+0

這只是javascript。問題是關於視圖和控制器的交互。 – 2011-05-19 00:32:46

+0

@nathangonzalez:問題被編輯爲有意義的,在此之前,提問者可能會問如何在javascript或服務器端處理它,不可能告訴 – 2011-05-19 00:34:23