4

MVC5 インターネット アプリケーションを開発していますが、HTML データを持つユーザー入力に関して質問があります。

[AllowHtml]モデルに HTML コードが必要な場合は、データ注釈を含めてからオブジェクト フィールドをサニタイズできることを理解しています。

私の質問は、ユーザーが HTML コードを入力するデータ注釈を持たないオブジェクト フィールドの場合、エラー[AllowHtml]を表示するのではなく、このエラーに対応することは可能Error.cshtmlですか?

Error.cshtml理想的には、エラーを表示してログに記録する前に、ビューに検証メッセージを表示したいと思います。

これは可能ですか?Error.cshtmlエラーを表示してログに記録する前に、どうすればエラーに対応できますか。

前もって感謝します。

アップデート

Global.asaxファイルには次のような関数があります。

protected void Application_Error(object sender, EventArgs e)

この関数は、ユーザーが存在しないページに移動するなどのエラーをキャッチしますが、http error問題はファイルに直接移動しerror.cshtmlます。

Application_Error関数がこのエラーをキャッチするようにコードを編集するにはどうすればよいですか?

私はElmahロギングに使用しており、持っていますcustomErrors mode="On"

4

1 に答える 1

2

テキスト ボックスに HTML が含まれていないかどうかをチェックするバリデータを作成するのはそれほど簡単ではありません。これは、HTML が特定の文字によって定義されているのではなく、それらの組み合わせによって定義されているためです。<、「>」、さらには HTMLを含むテキスト<script>は必ずしも HTML ではありません。

許容値のアプローチを取る必要があります。テキストボックスに数値のみを含める必要がある場合は、そのように検証します。

をオーバーライドApplication_ErrorするGlobal.asaxことで、この例外をキャッチし、ユーザーをより意味のあるエラー ページにリダイレクトできます。

protected void Application_Error()
{
    Exception lastError = Server.GetLastError();
    if (lastError is HttpRequestValidationException)
    {
        //redirect to a static page and show proper error message
    }
}

Elmah を使用している場合は、さらに簡単になります。Elmah は、ASP.Net エラー処理で動作するように設計されています。

(または)HandleErrorAttributeからデフォルト グローバルを削除し、次にエラー ページを設定する必要があります。App_Start\FilterConfigGlobal.asaxWeb.config

<customErrors mode="On" defaultRedirect="~/error/" />

問題が発生した場合は、この記事を確認してください。すべてが非常によく説明されてい
ます http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

于 2014-12-08T07:58:47.613 に答える