2012-05-11 9 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は、私は、ビューのHTMLおよび "ISERROR =真" を含むJSONを返すようにしたいです!

ViewBag.ErrorNumber = number; 
return View(); 

クライアント側JavaScriptが戻り値をキャッチします。
"IsError"がtrueの場合、返されるhtmlテキストがレンダリングされます(私が欲しい)

答えて

1

jsonを返し、JavaScript側でHTML DIVを作成する必要があります。私はあなたがjsonでHTMLを返すことはできないと思う。

+0

同じレスポンスで既にHTMLを作成している場合、なぜjavascriptでコンテンツを作成するのですか? –

+1

ビューの代わりにエラーが発生した場合、Jsonの結果を返すことをお勧めします。 –

+0

@Jonas Stensved私は、私が推測するErrorControllerでjsonまたはhtmlを返すことができます。 – Nigiri

0

多くの場合、他の場所で問題が発生していることがよくありません。

  1. キャッチ標準のtry-catchとアクションでエラー:

    は、私は次のアプローチをお勧めします。

    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:

  2. チェックそれはIsAjaxRequestとAjaxのリクエストがあると真、そうでない場合は、標準のHTMLビューここ

を返す場合、JSONを返す場合は、あなたの行動の例です

あなたの質問をもう一度読み終えたら、達成しようとしていることがわかったかもしれません。

  1. json結果を出力するには、上記のコードを使用します。
  2. Successがfalseの場合、エラーを表示するために必要なhtmlを作成し、HTML DOMに追加します。

私はそれがJSONでHTMLを返すために悪い習慣だと言うだろう、それはJSONだけで情報を伝達し、プレゼンテーション層(HTML &ジャバスクリプト)は外観を処理させるようにする方が良いでしょう。

jQueryを使用している場合、プロトタイプなどは非常に簡単です。

関連する問題