我在使用stringbuilder创建"<a href="javascript:window.open('www.microsoft.com');">Visit Microsoft</a>
之类的链接时遇到问题。我正在动态地向面板添加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&batchid=26596')" onclick="window.open(" href="javascript:void(0)">Match</a>
我不知道我做错了什么,它甚至为常规字符串做了这种废话!
请帮忙!
答案 0 :(得分: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,因此转义字符必须为“”。
答案 1 :(得分: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
这就是我得到的
Here is what I got. http://www.angelfire.com/ri2/DMX/stringbuilder.jpg
除了输出不是HTML格式之外,我看不出我们如何得到不同的结果。
我更改了代码以生成HTML格式以及更新后的照片。
答案 2 :(得分:0)
为什么不尝试使用它。
Dim s as string
s = "<A HREF='javascript:void(0)' onclick='window.open('Match.aspx?MatchID=" _
& mt.MatchID & "&batchid=" & mb.batchID & "')Match</A>"
答案 3 :(得分: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中出现错误。修正了一些引用。
答案 4 :(得分: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);