0

asp.netアプリケーション(vbコードビハインド)に、右側にiframeがあるページがあります。ページの左側(これを親ページと呼びます。iframeはiframeになります)にはいくつかのテーブルがあり、特定のセルをクリックすると、javascriptを使用してiframeのsrcが変更され、内部に詳細なアカウントが表示されます。クリックしたエントリのiframe。上部のiframe内には、このエントリに到達するためにたどる必要のあるエントリを示すブレッドクラムトレイルがあります(ツリーのようなもので、さまざまなレベルのエントリがあり、下の各エントリは親にリンクされています上記など)。これらのリンクは、VB側の関数を使用して作成された単純なhtmlリンクです。私の問題は、親ページからエントリをクリックすると、すべてが正しく読み込まれることです。しかし、iframeのブレッドクラムトレイルでwithからのリンクをクリックすると、一部の画像上でマウスをスクロールすると、マウスオーバーを処理するjavascript関数でエラーが発生します。どちらの方法(srcを変更するか、フレーム内のリンクをクリックする)でも、同じページと関数を呼び出します。親ウィンドウからクリックすると、問題が見つかったと思います。マウスオーバーのjavascript呼び出しは次のようになります。

onmouseover="imgOv(this, '../images/modify.gif')"

iframe内のリンクをクリックすると、マウスオーバーは次のようになります。

onmouseover="imgOv(this, '../images/level_over.gif')"

このhtmlを生成するコードは次のとおりです。フレームのsrcが変更されたときのように、一重引用符が単なる引用符ではなく'に変わる理由を誰かが理解できますか?

コード:

これがnavSpotです-詳細ページのプレースホルダーです。ここの情報は別のVBライブラリからロードされます

<asp:PlaceHolder id="NavSpot" Runat="server"></asp:PlaceHolder>

詳細ページの読み込み時に(詳細ページはiframe内のページであり、親からクリックすると、フレームのsrcが詳細ページに変更されます。リンクからクリックすると、hrefを使用してページを呼び出します。 )。これがnavSpotを処理するコードです

    Dim myCtrl As UserControl = LoadControl("../include/NavDetailScreens.ascx")
    myCtrl.ID = "navControl"
    NavSpot.Controls.Add(myCtrl)

そして、これがNavDetailScreens.ascxが呼び出されたときに呼び出される関数です-同じ正確なパラメーターがSPに渡されていること、およびsrcを変更したりiframeに既にあるリンクをクリックしたりすることに違いがないことを確信しています(ストアドプロシージャに使用されるパラメータに関して)。エラーセクションは最後にあるようです。具体的には、サブの終わりに向かって3行で、「If DS.Item( "activity_enable")= 1Then」で始まるifの内側にあります。これは、シングルの場合のようです。引用符は&#39;に変換されます (スペースを使用したため、一重引用符に自動調整されませんでした-JS関数にある実際の文字列にはスペースがありません)

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Put user code to initialize the page here
    If Request.QueryString("standalone") <> "true" Then
        Dim strConn As String
        strConn = WebConfigurationManager.AppSettings.Item("ConnectionString")
        Dim objConn As SqlConnection
        objConn = New SqlConnection(strConn)
        Dim myCmd As SqlCommand
        myCmd = New SqlCommand
        myCmd.Connection = objConn
        myCmd.CommandType = CommandType.StoredProcedure
        myCmd.CommandText = "SPNavigation"
        Dim lnChildCat As Integer
        Dim prmEntityID As New SqlParameter("@entityID", SqlDbType.BigInt)
        prmEntityID.Value = Request.QueryString("taskgrpid")
        Dim prmEntityCat As New SqlParameter("@entityCat", SqlDbType.Int)

        If Request.QueryString("taskgrpid") = "" Then
            prmEntityCat.Value = 35
            lnChildCat = 26
            prmEntityID.Value = DBNull.Value
        ElseIf Request.QueryString("taskgrpcategory") = Request.QueryString("ptaskgrpcategory") Then
            If Request.QueryString("taskgrpcategory") = 26 Then
                prmEntityCat.Value = 34
                lnChildCat = 34
            ElseIf Request.QueryString("taskgrpcategory") = 10 Then
                prmEntityCat.Value = 11
                lnChildCat = 11
            ElseIf Request.QueryString("taskgrpcategory") = 11 Then
                prmEntityCat.Value = 12
                lnChildCat = 12
            ElseIf Request.QueryString("taskgrpcategory") = 12 Then
                prmEntityCat.Value = 13
                lnChildCat = 13
            ElseIf Request.QueryString("taskgrpcategory") = 35 Then
                prmEntityCat.Value = 35
                lnChildCat = 26
            ElseIf Request.QueryString("taskgrpcategory") = 34 Then
                prmEntityCat.Value = 10
                lnChildCat = 11
            End If
        Else
            If Request.QueryString("taskgrpcategory") = 26 Then
                prmEntityCat.Value = 26
                lnChildCat = 34
            Else
                prmEntityCat.Value = Request.QueryString("taskgrpcategory")
                lnChildCat = Request.QueryString("taskgrpcategory")
            End If
        End If



        Dim prmIsMilestone As New SqlParameter("@isMilestone", SqlDbType.Int)
        If Request.QueryString("milestone") = "true" Then
            prmIsMilestone.Value = 1
        Else
            prmIsMilestone.Value = 0
        End If

        Dim prmResID As New SqlParameter("@resid", SqlDbType.Int)
        prmResID.Value = Session.Item("user_id")
        myCmd.Parameters.Add(prmEntityID)
        myCmd.Parameters.Add(prmEntityCat)
        myCmd.Parameters.Add(prmResID)
        myCmd.Parameters.Add(prmIsMilestone)
        Dim DS As SqlDataReader
        objConn.Open()
        DS = myCmd.ExecuteReader
        Dim objRow As TableRow
        objRow = New TableRow
        Dim objCell As TableCell
        Dim lc As LiteralControl
        Dim dynImg As Image
        While DS.Read
            objCell = New TableCell
            lc = New LiteralControl
            lc.Text = "<br>" & DS.Item("act_name")
            dynImg = New Image
            If Request.QueryString("mode") = "create" Then
                If IsDBNull(DS.Item("act_frm_params")) = False Then
                    If Request.QueryString("milestone") = "true" Then
                        If DS.Item("act_frm_params") = "&mode=create&milestone=true" And CInt(lnChildCat) = CInt(DS.Item("act_task_category")) Then
                            dynImg.ImageUrl = DS.Item("act_img_name_edit")
                        Else
                            dynImg.ImageUrl = DS.Item("act_img_name_disabled")
                        End If
                    Else
                        If DS.Item("act_frm_params") = "&mode=create" And CInt(lnChildCat) = CInt(DS.Item("act_task_category")) Then
                            dynImg.ImageUrl = DS.Item("act_img_name_edit")
                        Else
                            dynImg.ImageUrl = DS.Item("act_img_name_disabled")
                        End If
                    End If
                Else
                    dynImg.ImageUrl = DS.Item("act_img_name_disabled")
                End If
            ElseIf Request.QueryString("mode") = "edit" Then
                If IsDBNull(DS.Item("act_frm_params")) = False Then
                    If Request.QueryString("milestone") = "true" Then
                        If DS.Item("act_frm_params") = "&mode=edit&milestone=true" Then
                            dynImg.ImageUrl = DS.Item("act_img_name_edit")
                        Else
                            dynImg.ImageUrl = DS.Item("act_img_name_disabled")
                        End If
                    Else
                        If DS.Item("act_frm_params") = "&mode=edit" And CInt(Request.QueryString("taskgrpcategory")) = CInt(DS.Item("act_task_category")) Then
                            dynImg.ImageUrl = DS.Item("act_img_name_edit")
                        Else
                            dynImg.ImageUrl = DS.Item("act_img_name_disabled")
                        End If
                    End If
                Else
                    dynImg.ImageUrl = DS.Item("act_img_name_disabled")
                End If
            Else
                If DS.Item("activity_enable") = 1 Then
                    dynImg.ImageUrl = DS.Item("act_img_name")
                    dynImg.Style.Add("cursor", "hand")
                    dynImg.Attributes.Add("onmouseover", "imgOv(this, '" & DS.Item("act_img_name_over") & "')")
                    dynImg.Attributes.Add("onmouseout", "imgOu(this, '" & DS.Item("act_img_name") & "')")
                    dynImg.Attributes.Add("onclick", "imgclick('" & DS.Item("act_frm_name") & "', '" & DS.Item("act_frm_params") & "" & "', " & DS.Item("act_task_category") & ")")
                Else
                    dynImg.ImageUrl = DS.Item("act_img_name_disabled")
                End If
            End If
            objCell.Controls.Add(dynImg)
            objCell.Controls.Add(lc)
            objCell.CssClass = "infotext2"
            objCell.VerticalAlign = VerticalAlign.Top
            objCell.Width = Unit.Pixel(50)
            objRow.Cells.Add(objCell)
        End While
        DS.Close()
        objConn.Close()
        tlbNav.Rows.Add(objRow)
    End If
End Sub

よろしくお願いします。

編集:一重引用符を通常の引用符に変更すると、&#39ではなく&quoteに置き換えられるため、これは解決策ではありませんでした。

編集2:これが.net 4.0とセキュリティアップデートの原因のようです-3.5にロールバックするとこの問題は修正されますが、これはオプションではありません。この変換を停止する他の解決策はありますか?

4

1 に答える 1

0

は、hrefのあるリンクをクリックする代わりに、親ページでjavascript関数を呼び出すようにリンクを変更することでこの問題を解決できました。これにより、代わりにiframeのsrcが変更され、コンマはこのように変換されません。

于 2013-01-18T19:46:00.403 に答える