波浪在HyperLinkColumn没有解决ASP.NET 2.0
题
我有一个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
手动)。