.aspx中的String.Format之后没有显示其余文本

时间:2009-12-02 18:48:40

标签: asp.net

<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}之后该字符串的其余部分被切断了。

3 个答案:

答案 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