0

「IsError」フラグ付きのエラーHTMLテキストを返したいのですが。
どうすれば実装できますか?
これが私の試練です。
Ajax.BeginFormを送信し、サーバー側でエラーが発生したと仮定します。

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=true"を含むJSONを返したい!!

ViewBag.ErrorNumber = number;
return View();

クライアント側のJavaScriptが戻り値をキャッチします。
そして、返されるhtmlテキストは、「IsError」がtrueの場合にレンダリングされます。(私が望む)

4

2 に答える 2

1

jsonを返し、javascriptを使用してクライアント側でHTMLDIVを作成する必要があると思います。jsonではHTMLを返すことはできないと思います。

于 2012-05-11T06:48:47.147 に答える
0

あなたの必要性は珍しいようですが、それはしばしば他の場所での問題の兆候です。

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

  1. 標準のtry-catchを使用して、アクションのエラーをキャッチします。
  2. IsAjaxRequestを使用してajaxリクエストであるかどうかを確認し、trueの場合はjsonを返します。そうでない場合は、標準の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
            }
        }


    }

アップデート:

あなたの質問をもう一度読んだ後、私はあなたが何を達成しようとしているのか理解したかもしれません。

  1. 上記のコードを使用して、jsonの結果を出力します。
  2. クライアント側で、Successfalseの場合にエラーを表示するために必要なhtmlを作成し、それをHTMLDOMに追加します。

JSONでhtmlを返すのは悪い習慣だと思います。JSONに情報だけを伝え、プレゼンテーション層(htmlとjavascript)に外観を処理させる方がよいでしょう。

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

于 2012-05-11T06:49:40.273 に答える