0

GetText()次の場所で呼び出されている私の質問に関連する次の機能があります。

myGridView.DataSource = stuff.Select(s => new
{
   //...some stuff here
   f.Text = GetText();
}
myGridView.DataBind();

GetText は次のようになります。

private void string GetText()
{
    StringBuilder sb = new StringBuilder();
sb.Append("<abbr title=\"Testing\">");
    sp.Append("This is the Text that I want to display");
sb.Append("<\abbr>");
}

したがって、基本的に、私がやりたいことは、Web ページに次の HTML を含めることができることだけです。

<abbr title="Testing">This is the text that I want to display</abbr>

しかし、謎のタグが出現。Google Chrome でコンソールを確認すると、次のように表示されていました。

<abbr title="Testing">This is the text that I want to display<bbr></abbr>

行を追加すると不要なタグが生成されます。sb.Append("<\abbr>"); これはその行を削除すると修正されますが、これによりコードがぎこちなく見えるため、より良い解決策を見つけたいと考えています。

複数行の代わりに次のことも試しましsb.Appends()たが、余分なテキストはまだ表示されています。

sb.Append(string.Format("<abbr title=\"testing\">{0}<\abbr>",Text));

注: Text は、表示したいテキストと等しい文字列であると仮定します。

4

5 に答える 5

2

使用する

sb.Append("</abbr>");

おそらく、エスケープ文字とそれに続くテキスト\abbrとして解釈されます\abbr>

ちなみに、MSDN のエスケープ シーケンス\aを見ると、BELL 文字のエスケープ シーケンスのようです。(いいえ、PC からビープ音を聞くべきではないと思います)

于 2013-01-04T20:49:19.260 に答える
2

終了タグが間違っています。そうであってはなり</abbr>ません<\abbr>

<\abbr>の中にエスケープされたa(何も意味しない)が含まれ<bbr>ます。Chrome は明らかに<abbr>タグを閉じます。したがって、余分なタグは実際に</abbr>はありません<bbr>

于 2013-01-04T20:49:28.833 に答える
1

他の人が言ったように、これは問題です:

sb.Append("<\abbr>");

...しかし、何が起こっているのかを正確に見る価値があります。

それは追加<であり、次に U+0007 (「アラート」文字、またはベル)、次にbbr>. 有効なエスケープ文字ではない文字 (例: )を使用してこれを行った場合"<\zfoo>"、コンパイル時にエラーが発生します。他の場合には、HTML で見ることができたかもしれません。完全に見えないコントロール キャラクターを選択したため、見えにくくなりました。

余談ですが、必要な C# プログラムを見たことがないと思います\a\x有効なエスケープ文字ではなかったらいいのに-16進シーケンスと一緒に...

于 2013-01-04T20:53:03.167 に答える
1

推測ですが、終了タグにスラッシュの代わりにバックスラッシュがあるためですか?

sb.Append("<\abbr>");

sb.Append("</abbr>");
于 2013-01-04T20:49:31.373 に答える
1

これがあなたの方法が好きな方法です

    private string GetText()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("<abbr title=\"Testing\">");
        sb.Append("This is the Text that I want to display");
        sb.Append("</abbr>");

        return sb.ToString();
    }

「\」はエスケープ文字です:)

于 2013-01-04T20:54:17.923 に答える