0

"<a href="javascript:window.open('www.microsoft.com');">Visit Microsoft</a>stringbuilder を使用するようなリンクの作成に問題があります。パネルに html を動的に追加し、ポップアップ リンクを作成しようとしています。

問題は、何らかの理由でリンクが「混乱」することです。例えば:

Dim s As String
sb.Append("<A HREF='javascript:void(0)' onclick='window.open(")
sb.Append("'")
sb.Append("Match.aspx?MatchID=")
sb.Append(mt.MatchID)
sb.Append("&batchid=")
sb.Append(mb.batchID)
sb.Append("')>")
sb.Append("Match</A>")

の出力を与える:

<a match.aspx?matchid="28840&amp;batchid=26596')" onclick="window.open(" href="javascript:void(0)">Match</a>

何が間違っているのかわかりません。通常の文字列に対してこの種のがらくたを行うことさえあります!

助けてください!

4

5 に答える 5

3

出力は有効な HTML ではありません:

<A HREF='javascript:void(0)' onclick='window.open('Match.aspx?MatchID=10&batchid=10')>Match</A>

この HTML を出力する必要があります。

<A HREF="javascript:void(0)" onclick="window.open('Match.aspx?MatchID=10&batchid=10')">Match</A>

どうですか:

Dim s As String
sb.Append("<A HREF=""javascript:void(0)"" onclick=""window.open(")
sb.Append("'")
sb.Append("Match.aspx?MatchID=")
sb.Append(mt.MatchID)
sb.Append("&batchid=")
sb.Append(mb.batchID)
sb.Append("')>""")
sb.Append("Match</A>")

必要なことは、出力が有効な HTML であることを確認し、属性の引用符と JavaScript 文字列の引用符を混在させないことです。

編集:これは VB であるため、エスケープ文字は "" である必要があることに気付きました。

于 2010-01-26T05:29:33.787 に答える
1

ここにあなたのコードと、 LINQPadに貼り付けた Stringbuilder の宣言があります

Sub Main
Dim sb As New Stringbuilder
Dim s As String
sb.Append("<A HREF=""javascript:void(0)"" onclick=""window.open(")
sb.Append("'")
sb.Append("Match.aspx?MatchID=")
sb.Append("45") 'Used random numbers for MatchID
sb.Append("&batchid=")
sb.Append("45") 'Used random numbers for batchid
sb.Append("')")
sb.Append(""">")
sb.Append("Match</A>")
Console.WriteLine(sb)
End Sub

そして、これが私が得たものです

これが私が得たものです。
(ソース: angelfire.com )

出力が HTML 形式ではないことに加えて、どのように異なる結果が得られるのかわかりません。

編集:

更新された写真とともに HTML 形式を生成するようにコードを変更しました。

于 2010-01-26T05:43:37.077 に答える
0

そのように sb.Append を使用すると、少し長くなります。代替手段は次のとおりです。

string myHTML = string.Format("<A HREF='javascript:void(0)' onclick='window.open(\"Match.aspx?MatchID={0}&batchid={1}\")'>Match</A>"
              ,mt.MatchID
              ,mb.batchID
             );

onclick() 関数で一重引用符と二重引用符が混在していることに注意してください。

もちろん、次のように新しい HTML 要素を宣言する方がより良い方法かもしれません。

HtmlLiteral myAnchor = new HtmlLiteral("A");
myAnchor.Attributes.Add("href", "javascript:void(0);");
myAnchor.Attributes.Add("onclick", "my javascript");
...etc...
myPanel.Controls.Add(myAnchor);
于 2010-01-26T05:48:57.457 に答える
0

これを使ってみませんか。

Dim s as string
s = "<A HREF='javascript:void(0)' onclick='window.open('Match.aspx?MatchID=" _
    & mt.MatchID & "&batchid=" & mb.batchID & "')Match</A>"
于 2010-01-26T05:26:41.047 に答える
0

string.Format の使用を検討しましたか?

stringToFormat.Format("<A HREF="javascript:void(0)" onclick="window.open('Match.aspx?MatchID={0}&batchid={1}')">Match</A>", mt.MatchID, mb.batchID);

また、このような例で文字列を明確に確認するのにも役立ち、HTML の間違いがすぐにわかります。いくつかの引用を修正しました。

于 2010-01-26T05:37:25.110 に答える