1

いくつかの入力フィールド(intと文字列のカップル)とサードパーティのグリッドビューを含むaspxページがあります。データが検証され、ストアドプロシージャがコードビハインドから呼び出されて、データがDBに保存されます。

Gridviewには、コードビハインドから呼び出すことができるエラーボックスをユーザーに表示する機能があります。したがって、例外をキャッチすると、エラーメッセージが表示されます(エラーメッセージは次のようなものです:「データをデータベースに保存できません。エラー:」&ex.messageとエラーボックスを表示する関数を呼び出します。

通常、これはうまく機能しますが、(ああ、これは嫌いですが)sqlexceptionを表示しようとすると、ページにjavascript / htmlエラーが表示され、エラーボックスが表示されません。

ex.messageには、このjavascript/htmlエラーボックスでは表示できない文字が含まれているという結論に達しました。

そこで、System.Web.HttpUtility.HtmlEncode(ex.message)を使おうとしましたが、うまくいきませんでした。

好奇心からSystem.Web.HttpUtility.UrlEncode(ex.message)も実行したところ、エラーメッセージを表示できましたが、もちろん空白の代わりに「+」が表示されていました。

例:Cannot + insert + duplicate + key + row + in + object +'dbo.TableName' + with + unique + index +'IX_Unique_Dan'。%0d%0aThe + statement + has + been+terminate。

不要な文字やeofなどを削除する組み込みの方法はありますか?現在、文字列内の文字をチェックするCleanStringという名前の関数を使用しています。こんな感じ…

For Each c As Char In value.ToCharArray()
    If(Char.IsLetterOrDigit(c))Then
        msg = msg&c
    ElseIf(c = "。")Then
        msg = msg&"。"

        。
        。
        。

    そうしないと
        msg = msg& ""
    終了する場合
次

Tnx、Benxy

4

2 に答える 2

0

エラーメッセージとHtmlEncode()に問題がある可能性は低く、問題の原因となっている他のJavaScriptがページで実行されている可能性があります。

ここにエラーメッセージを入力してください。確実にわかります。

また、これは公開されていますか?ユーザーに内部エラーを表示するべきではありません。特にデータベースからのものである場合は、セキュリティホールを開く可能性があります。

于 2010-08-24T11:18:06.190 に答える
0

多分あなたは引用符をエスケープする必要がありますか?すべての一重引用符をバックスラッシュ付きの一重引用符に置き換えます。

エラーが発生している javascript/html ソース行を含む正確なブラウザ エラー メッセージを貼り付けていただけますか。

于 2010-08-24T11:08:46.830 に答える