<div visible="false" runat="server"><a href='<%#string.Format("{0}removeAllItems=true", this.Page)%>' onclick="return confirm('Are you sure you want to remove all items?')">Remove all items</a></div>
当我运行它时,它不显示查询字符串部分,只显示page.aspx。我不明白为什么{0}之后该字符串的其余部分被切断了。
答案 0 :(得分:4)
问号的问题可能与使用数据绑定(<%#...%>
)而不是简单输出(<%=...%>
)有关。
String.Format过度,因为你只想连接两个字符串:
<a href='<%=String.Concat(this.Page, ".aspx?removeItems=true")%>' >text</a>
或者只是将第二个字符串放在标记中:
<a href='<%=this.Page%>.aspx?removeItems=true' >text</a>
答案 1 :(得分:0)
你的字符串连接是不必要的;你试过这个吗?
<a href='<%#string.Format("{0}.aspx?removeItems=true", this.Page)%>' >text</a>
答案 2 :(得分:0)
因为它忽略了?,试试这个:
<a href='<%#string.Format("{0}.aspx{1}removeItems=true", this.Page, "?")%>' >text</a>
内联标记&lt;%#用于数据绑定,但是这个 Page不是数据绑定属性。将其切换为&lt;%=,这相当于Response.Write&amp;看看是否有效。
这是hackish,但有时这就是asp.net所需要的。
E.g。如果你在运行时使用StringBuilder创建一个javascript字符串,并尝试使用StringBuilder.AppendFormat,除了格式大括号之外你不能有任何其他大括号。您可以使用一个string.format方法并注入“{”和“}”以与我的答案类似的方式克服该问题。
“?”问题可能是使用数据绑定标记处理代码页错误的问题。有关详细信息,请参阅:http://support.microsoft.com/kb/893663