c#
  • asp.net
  • 2012-03-23 12 views 0 likes 
    0

    I持って、次の表の行:不正なXML文字

    <tr id="trInbox" runat="server" class="normal" 
        style='cursor:pointer; font-weight:<%# StyleBold(Convert.ToBoolean(Eval("inbRead"))) %>' 
        onclick='selectedRow(this,<%# Eval("INBID") %>)' 
        onMouseOver="if(this.className!='selected') this.style.backgroundColor='#E2E1F4';" 
        onMouseOut="if(this.className!='selected') this.style.backgroundColor='#FFFFFF'"> 
    

    しかし、私はこれを実行した後、私は次のエラーを取得:

    illegal XML character [Break On This Error]

    selectedRow(this,<%# Eval("INBID") %>)

    あなたは、私が行方不明です何の構文を教えてもらえますか?

    +0

    INBID' 'の値は何ですか? – Oded

    答えて

    1

    要素サーバー側を実行する場合は、動的データを含む属性値を追加するときは、String.Format()を使用するのが最善です。試してください:

    <tr id="trInbox" runat="server" class="normal" style='<%# String.Format("cursor:pointer; font-weight:{0}", StyleBold(Convert.ToBoolean(Eval("inbRead")))) %>' onclick='<%# String.Format("selectedRow(this,{0})", Eval("INBID")) %>' onMouseOver="if(this.className!='selected') this.style.backgroundColor='#E2E1F4';" onMouseOut="if(this.className!='selected') this.style.backgroundColor='#FFFFFF'"> 
    
    0

    多分あなたは ";" onMouseOutのbackgroundColorスタイルで指定します。

    0

    selectedRowメソッドは、オブジェクト(de)のシリアライズやXml文字列のXmlドキュメントへの変換を含む処理を行うと思います。

    一部の文字は違法です:http://www.w3.org/TR/REC-xml/#charsets

    あなたが任意の無効な文字を削除するには、あなたのXML文字列をチェックする必要があります。ここで

    は文字が有効であるかどうかを確認するためのユーティリティメソッドの例です:あなたがエラーを取得するとき

    public static bool IsValidCharForXml(char x) 
        { 
         return x == (char)0x9 
            || x == (char)0xA 
            || x == (char)0xD 
            || (x >= (char)0x20 && x <= (char)0xD7FF) 
            || (x >= (char)0xE000 && x <= (char)0xFFFD); 
        } 
    
    関連する問題