0

我有一些从资源文件加载的文本。通常,要获得动态内容,我会使用:

string.Format(GetLocalResourceObject("SomeText"), PhoneNumberAsString) 

我想对链接做同样的事情,只有链接需要是应用程序相关的,因为我有 URLmysite.com/page.aspxmysite.com/fr/page.aspx.

我通常使用<asp:HyperLink />标签来创建链接,因为我可以在开始处放一个波浪线NavigateUrl="~/page.aspx"。但是,我不知道如何让动态超链接显示为字符串而不将其作为控件添加到某些东西。

简单地写ToString()输出System.Web.UI.WebControls.HyperLink.

如何使用 ASP.NET Webforms 从资源文件中获取链接并使其成为超链接?

更新

在答案的一些帮助下,我现在在我的页面上有以下代码:

<p><%= string.Format(GetGlobalResourceObject("Resource", "MoreThan1000Users").ToString(), ResolveUrl("~/contact-us.aspx")) %></p>

在我的资源文件中,我有:

If you would like more than 1000 users please <a href="{0}">call our sales team</a>.

这似乎是一种很好的做法,还是有另一种方法可以实现我正在做的事情?我不知道我是否应该高兴资源文件中有 HTML。

4

2 回答 2

1

由于您尚未发布代码,我猜您在某处有一个 HyperLink WebControl 对象,您正在点击 ToString() 。如果是这种情况,您可以使用其myHyperLinkControl.NavigateUrl属性访问与其关联的 URL。

如果您使用 squiggle/波浪号(这很好)将链接存储在您的资源中,那么您可以将 squiggle 替换为您的应用程序位置。如果您有一个控件/页面,那么您可以轻松调用它的 ResolveURL 方法(该方法采用波浪号并自动替换它)如果您的上下文没有控件/页面引用,则有一些现有的解决方案,然后有一些讨论在此处执行此操作:没有 ASP.NET 页面的 ResolveUrl

于 2012-05-04T12:26:07.857 回答
0

我想这就是你想要的:

Server.MapPath("~/page.aspx")

这将在您的 aspx 和您的代码隐藏中工作。

于 2012-05-04T12:33:59.023 回答