我目前正在弄清楚如何处理文件路径(动态地)传递给HyperLink
控件的NavigateUrl
属性。
假设我正在尝试在jäynä.txt
的根目录中引用名为C:
的文件。
将"file:///C:/jäynä.txt"
结果传递给指向file:///C:/jäynä.txt
的链接,HttpUtility.UrlPathEncode("file:///C:/jäynä.txt")
也是如此。
将 ä
**替换为** %E4
,其中包含字符串"file:///C:/j%E4yn%E4.txt"
,确实为file:///C:/jäynä.txt
提供了工作链接,但我没有找到一种方法来替换,而不是自己定义。以Replace("ä", "%E4")
为例。
有没有办法自动处理文件路径字符串,以便HyperLink
能正确显示它,而无需手动列出字符串中要替换的字符?
附加说明:
可能有一种方法可以解决这个问题,因为调试显示了呈现页面的字符编码,因为调试显示HyperLink
至少保存字符串"file:///C:/jäynä.txt"
不变,但不知怎的,它会在某种程度上破坏它渲染。
但是,这似乎只是渲染NavigateUrl
的情况,因为其他组件以及HyperLink
的{{1}} - 属性都能够呈现字符 {{ 1}} 不变。
答案 0 :(得分:4)
超链接的NavigateUrl属性将对网址中的unicode字符进行编码。
相反,您可以像这样设置超链接的href属性:
hyperlink1.Attribute("href") = "file:///C:/jäynä.txt"
答案 1 :(得分:1)
这是由于浏览器开始解释路径的方式,通常个人会避免使用页面网址中的字符。
在您的情况下,我相信您已经找到了最好的情况,因为我不知道有任何方法可以改变HttpUtility和/或NavigateUrl属性的行为。至少没有为它创建自定义控件。
答案 2 :(得分:1)
不要使用HyperLink控件。而是使用HtmlAnchor控件。它会解决你的问题。我不知道为什么微软会这样设计。
答案 3 :(得分:0)
谢谢! 使用'属性'的帖子解决了我的问题。就我而言,它是
HyperLink6.Attributes["href"] = "http://høgstedt.danquah.dk/";
在网址中使用特殊丹麦字符的问题似乎一直困扰着很多程序员 - 搜索提供了一些非常复杂的方法。这个很简单,而且很简单。 再一次,谢谢你