0

asp.net(vb) の分離コードから JavaScript アラート ボックスを生成しています。

コード:

            Catch ex As Exception
                MesgBox("Error in uploading file due to following exception" & vbNewLine & ex.ToString)
                trans.Rollback()
            Finally
                conn.Close()
            End Try

メッセージボックス機能は次のとおりです。

Private Sub MesgBox(ByVal sMessage As String)
    Dim msgedtble As String = sMessage.Replace("\", "\\")
    msgedtble = msgedtble.Replace(vbNewLine, "\n")
    Page.ClientScript.RegisterStartupScript(Me.GetType,
 "myScripts",
 "<script language='javascript'>alert('" & msgedtble & "');</script>")

End Sub

例外がスローされると、クライアント側の html のフォーム タグに次のスクリプトが追加されます。

        <script language='javascript'>alert('Error in uploading file due to following exception\nSystem.Data.SqlClient.SqlException (0x80131904): Violation of UNIQUE KEY constraint 'IX_AccountMaster'. Cannot insert duplicate key in object 'dbo.AccountMaster'.\nThe statement has been terminated.\n   at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)\n   at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)\n   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)\n   at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)\n   at System.Data.Common.DbDataAdapter.Update(DataTable dataTable)\n   at UploadAccountMasterXl.Button1_Click(Object sender, EventArgs e) in C:\\Users\\ssaa\\Documents\\Visual Studio 2010\\WebSites\\Dpp2012\\UploadAccountMasterXl.aspx.vb:line 57');</script>

これがブラウザ (Firefox) に表示されないのはなぜですか?

4

3 に答える 3

2

Imports System.Web.Script.Serializationファイルの先頭に追加してから、これを試してください:

Private Sub MesgBox(ByVal sMessage As String)
    Dim serializer as New JavaScriptSerializer()
    Dim msgedtble As String = serializer.Serialize(sMessage)
    Page.ClientScript.RegisterStartupScript(Me.GetType, "myScripts",
        "<script type='text/javascript'>alert(" & msgedtble & ");</script>")
End Sub

JavaScriptSerializer を使用すると、改行、一重引用符、およびまだ考えていないその他すべてに対処する必要があります。

于 2012-06-30T13:19:05.570 に答える
1

JavaScript では、文字列定数が改行をまたぐことはできません。

サーバー側のコードでは、エラー メッセージの改行を "\n" に置き換える必要があります。

于 2012-06-30T12:48:52.097 に答える
1

Pointy からの回答を続行するには、メッセージに'文字が含まれているため、エスケープする必要があります。

これを試して...

  msgedtble = msgedtble.Replace(vbNewLine, "\n").Replace("'","\'")

絶対に必要というわけではありtype='text/javascript'ませlanguage='javascript'ん。

于 2012-06-30T13:12:41.977 に答える