1

我有一个带有几个输入字段(几个 int 和字符串)和第 3 方 gridview 的 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+terminated。

有没有内置的方法来删除不需要的字符、eofs 和类似的?目前我正在使用名为 CleanString 的函数来检查字符串中的字符。看起来像这样...

For Each c As Char In value.ToCharArray()
    如果 (Char.IsLetterOrDigit(c)) 那么
        味精 = 味精 & c
    ElseIf (c = ".") 那么
        味精=味精&“。”

        .
        .
        .

    别的
        味精=味精&“”
    万一
下一个

Tnx,本西

4

2 回答 2

0

错误消息和 HtmlEncode() 不太可能是问题,更有可能是页面上运行的其他一些 javascript 导致了问题。

在此处提供错误消息,我们可以确定。

另外,这是面向公众的吗?你真的不应该向用户显示内部错误,尤其是当它来自数据库时,你可能会打开一个安全漏洞。

于 2010-08-24T11:18:06.190 回答
0

也许您需要转义引号?用反斜杠单引号替换每个单引号。

您能否将确切的浏览器错误消息粘贴到发生错误的 javascript/html 源代码行中。

于 2010-08-24T11:08:46.830 回答