2012-05-11 63 views
0

我想用「IsError」標誌返回錯誤的html文本。
我該如何實現它?
這是我的試用版。
假設我在服務器端提交了Ajax.BeginForm和錯誤。如何返回包含視圖的html文本的JSON

的Global.asax

void Application_Error(Object sender, EventArgs e) 
{ 
    var exception = Server.GetLastError(); 
    var number = GetErrorNumber(); 
    Server.ClearError(); 
    Response.Redirect("/Error?number=" + number, false); 
} 

查看錯誤/指數

<div> 
An error occurred<br> 
Error number : @ViewBag.ErrorNumber 
</div> 

ErrorController我想回到JSON,包括查看HTML和 「ISERROR =真」!

ViewBag.ErrorNumber = number; 
return View(); 

客戶端JavaScript捕獲返回的值。 (我希望)

回答

1

我認爲你應該返回json並使用javascript在客戶端創建HTML DIV。我認爲你不能在json中返回HTML。

+0

爲什麼用javascript創建內容,如果你已經在相同的響應中創建html? –

+1

我建議在出現錯誤而不是視圖的情況下始終返回Json結果。 –

+0

@Jonas Stensved我可以在ErrorController上返回json或html。 – Nigiri

0

您的需求似乎並不常見,這往往表明其他地方存在問題。

我建議以下方法:

  1. 趕上與標準的try-catch操作的錯誤。
  2. 檢查它是否與IsAjaxRequest一個Ajax請求,並返回JSON如果爲true,否則返回一個標準的HTML視圖

這裏有一個關於你的行動的例子:

public ActionResult FormPostHandler() 
    { 

     try 
     { 

      // Process request 

     } 
     catch (Exception ex) 
     { 
      if (Request.IsAjaxRequest()) 
      { 
       return Json(new 
       { 
        Success = false, 
        ErrorNo = 1 
       }); 
      } 
      else 
      { 
       return View("ErrorView"); // add model for error 
      } 
     } 


    } 

UPDATE:

再次閱讀你的問題後,我可能已經想出了你想要達到的目標。

  1. 使用上述代碼輸出json結果。
  2. 在客戶端,如果Success爲false,則創建顯示錯誤所需的html並將其添加到您的HTML DOM。

我會說這是壞的做法,以JSON返回HTML,最好讓JSON攜帶信息並讓您的表示層(html & javascript)處理外觀。

如果你正在使用jQuery,原型等,這應該是非常簡單的。

相關問題