2

我目前在弄清楚如何处理要(动态)传递给HyperLink控件NavigateUrl属性的文件路径时遇到了麻烦。

假设我试图引用一个jäynä.txtC:.
将结果传递"file:///C:/jäynä.txt"给指向 的链接file:///C:/jäynä.txt,就像HttpUtility.UrlPathEncode("file:///C:/jäynä.txt").

将 **s 替换为ä**%E4,它给出了 string "file:///C:/j%E4yn%E4.txt",确实提供了一个到 的工作链接file:///C:/jäynä.txt,但我无法找到一种方法来进行替换而不自己定义它。以Replace("ä", "%E4")为例。

有没有办法自动处理文件路径字符串,以便HyperLink正确显示它,而无需手动列出要替换字符串中的哪些字符?

附加说明:
可能有一种方法可以通过指定呈现页面的字符编码来解决此问题,因为调试表明HyperLink至少将字符串保存"file:///C:/jäynä.txt"不变,但在呈现时会以某种方式破坏它。
然而,这似乎只在渲染 ' 时才会出现,NavigateUrl因为其他组件以及HyperLink's Text-property 都完全能够以ä不变的方式渲染字符。

4

4 回答 4

4

超链接的 NavigateUrl 属性将对 url 中的 unicode 字符进行编码。

相反,您可以像这样设置超链接的 href 属性:

hyperlink1.Attribute("href") = "file:///C:/jäynä.txt"
于 2012-05-21T18:00:46.667 回答
1

这是由于浏览器开始解释路径的方式,通常个人会避免使用诸如页面 url 中的字符。

在你的情况下,我相信你已经找到了最好的情况,因为我不知道有任何方法可以改变 HttpUtility 和/或 NavigateUrl 属性的行为。至少在没有为其创建自定义控件的情况下并非如此。

于 2009-03-09T13:40:11.940 回答
1

不要使用超链接控件。而是使用 HtmlAnchor 控件。它会解决你的问题。我不知道微软为什么要这样设计。

于 2010-05-23T11:44:45.827 回答
0

谢谢!使用“属性”的帖子解决了我的问题。就我而言,它是

HyperLink6.Attributes["href"] = "http://høgstedt.danquah.dk/";

在 url 中使用特殊丹麦字符的问题似乎一直困扰着很多程序员——搜索提供了几种非常复杂的方法。这个很简单,而且很简单。所以再一次,谢谢你

于 2012-12-19T09:10:02.807 回答