asp.net 的 HyperLinkField 中的 DataNavigateUrlFormatString 转义问题
我在我的 asp.net 应用程序中使用 HyperLinkField。
但是,当我使用 DateNavigateUrlFormation
时,我遇到了一些问题:
这是代码:
<asp:hyperlinkfield datanavigateurlfields="tab_name,rowid"
DataNavigateUrlFormatString="~\details.aspx?tab={0}&rowid={1}" />
由于有时 rowid
可能包含一些在 http 中具有指定含义的字符,因此在服务器端我无法获得正确的rowid
。
例如,一行的 rowid
AAAAAAAXXX+BA
现在生成的 url 将为:
http://xxx/details.aspx?tab=tab_name&rowid=AAAAAAAXXX+BA
由于这里有一个字符+
,我想解释一下 它。
我试过这个:
DataNavigateUrlFormatString="~\details.aspx?tab={0}&rowid=<%#Server.HtmlEncode({1})%>"
它也不起作用。
有什么想法吗?
I am usin the HyperLinkField in my asp.net application.
However when I use the DateNavigateUrlFormation
I meet some problem:
This is the code :
<asp:hyperlinkfield datanavigateurlfields="tab_name,rowid"
DataNavigateUrlFormatString="~\details.aspx?tab={0}&rowid={1}" />
Since sometime the rowid
may contain some characters which has the specified meaning in the http,so in the server side I can not get the correct rowid
.
For example,the rowid
of one row maybe
AAAAAAAXXX+BA
Now the generated url would be :
http://xxx/details.aspx?tab=tab_name&rowid=AAAAAAAXXX+BA
Since there is a character +
here,I want to excape it.
I tried this:
DataNavigateUrlFormatString="~\details.aspx?tab={0}&rowid=<%#Server.HtmlEncode({1})%>"
It does not work also.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用支持数据绑定的 TemplateField。
这样,您不需要 CodeBehind 中的代码,也不需要通过索引访问列(这很容易更改,从而导致将来出现问题)。
Use a TemplateField which does support the databinding.
This way you don't need code in CodeBehind and you don't need to access columns by index (which can easily change and thus lead to problems in the future).
此答案基于 Johan van der Slikke 的答案。我刚刚添加了 Uri.EscapeDataString:
This aswer is based on Johan van der Slikke's one. I just added Uri.EscapeDataString:
您需要在
RowDataBound
事件。更新
看看这篇文章
据此您可以以编程方式访问超链接字段。
或者我认为您需要在 RowDataBound 事件中处理它。
You need to handle this in the
RowDataBound
event.Update
Take a look at this article
According to that you can programatically access the hyperlink field.
OR I think what you need is to handle it in the RowDataBound event.