我有一个ASP.NET应用程序最初部署到Windows 2000服务器上的NET 1.1框架,我现在使用2.0.50727使用在Windows 2008 Server上。我们用符号(〜)来解决在许多应用领域的绝对路径和它的作品的东西像ASP:超链接控件(与运行在服务器标记),但对于我们这些正在使用HyperLinkColumns创建一个绑定的DataGrid控件基于从我们的数据库返回的ID值链接,波浪是越来越写入页面。

此代码:

HyperLinkColumn oLink = new HyperLinkColumn();
oLink.DataNavigateUrlField = "IdField";
oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";

时,此倾倒到页面:

<a href="~/Here171201.aspx">

IIS或.NET Framework版本之间有什么变化可能会导致此功能不再起作用?波浪线肯定是解决1.1 - 我已经部署在我们的组织十几1.1框架服务器上完全相同的代码。不幸的是,设置DataNavigateUrlFormatString类没有访问页,因此我不得不做一些kludging周围插入Page.ResolveUrl工作...

有帮助吗?

解决方案

我不知道任何东西改变,但我不使用HyperLinkColumns(我更喜欢它的模板列提供的控制),所以我还没有找过任何变化。

一种可能性,为众所周知的创可贴是改变这一行:

oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";

这样:

oLink.DataNavigateUrlFormatString = Page.ResolveUrl("~/Here{0}.aspx"); 

如果没有记错的有去一些问题时,母版页和使用“〜”由用户控制,但由于我看了这样的事情它已经有一段时间。

其他提示

我不认为一个DataGrid的HyperlinkColumn自动解析URL为绝对路径。 IIRC的DataNavigateUrlFormatString物业内部String.Format()只对所提供的格式要求。你确定这个工作正确的.NET 1.1吗? IIRC,.NET 1.1没有基于波浪线自动URL分辨率。

在我看来,你应该使用斯蒂芬提出的解决方案(呼叫Page.ResolveUrl手动)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top