如何从资源文件创建超链接?

时间:2012-05-04 11:59:48

标签: c# asp.net hyperlink

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

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

我想对链接执行相同的操作,只有链接需要与应用程序相关,因为我有mysite.com/page.aspxmysite.com/fr/page.aspx等网址。

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

只需撰写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。

2 个答案:

答案 0 :(得分:1)

由于你还没有发布代码,我猜你有一个你正在使用ToString()的HyperLink WebControl对象。如果是这种情况,您可以使用其myHyperLinkControl.NavigateUrl属性访问与其关联的网址。

如果您使用波浪形/波浪线(这很好)将链接存储在资源中,那么您可以将波形替换为您的应用位置。如果你有一个控件/页面,那么你可以很容易地调用它的ResolveURL方法(它采用波形符并自动替换它)如果你没有带上下文的控件/页面引用,那么有一些现有的解决方案,然后有一些讨论到在此处执行此操作:ResolveUrl without an ASP.NET Page

答案 1 :(得分:0)

我想这就是你想要的:

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

这将适用于您的aspx和您的代码隐藏。