0

我有一个最初部署到 Windows 2000 服务器上的 .Net 1.1 框架的 ASP.NET 应用程序,我现在正在使用 2.0.50727 的 Windows 2008 服务器上使用它。我们使用波浪号 (~) 来解析应用程序的许多区域中的绝对路径,它适用于诸如 asp:hyperlink 控件(带有 run-at server 标签)之类的东西,但适用于使用 HyperLinkColumns 创建的绑定数据网格控件基于从我们的数据库返回的 ID 值的链接,波浪号被写入页面。

这段代码:

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

正在将其转储到页面:

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

IIS 或 .NET Framework 版本之间的哪些变化可能导致此功能不再起作用?Tilde 肯定在 1.1 中解决了 - 我在我们组织的十几个 1.1 Framework 服务器上部署了完全相同的代码。不幸的是,设置 DataNavigateUrlFormatString 的类没有访问页面的权限,所以我必须做一些事情来插入 Page.ResolveUrl 工作...

4

2 回答 2

3

我不知道有什么变化,但我不使用 HyperLinkColumns(我更喜欢 Template 列提供的控件),所以我没有寻找任何变化。

作为众所周知的创可贴的一种可能性是改变这条线:

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

对此:

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

如果没记错的话,在转到母版页并使用用户控件中的“~”时会出现一些问题,但我已经有一段时间没有读到类似的东西了。

于 2009-03-26T14:05:04.000 回答
1

我不认为 Datagrid 的 HyperlinkColumn 会自动将 URL 解析为绝对路径。IIRC,该DataNavigateUrlFormatString属性仅在内部调用String.Format()提供的格式。您确定这在 .NET 1.1 上可以正常工作吗?IIRC,.NET 1.1 没有基于波浪号的自动 URL 解析。

在我看来,您应该使用 Stephen 提出的解决方案(Page.ResolveUrl手动调用。)

于 2009-03-26T14:24:32.003 回答