我有一些从资源文件加载的文本。通常,为了获得动态内容,我会使用:
string.Format(GetLocalResourceObject("SomeText"), PhoneNumberAsString)
我想对链接执行相同的操作,只有链接需要与应用程序相关,因为我有mysite.com/page.aspx
和mysite.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。
答案 0 :(得分:1)
由于你还没有发布代码,我猜你有一个你正在使用ToString()的HyperLink WebControl对象。如果是这种情况,您可以使用其myHyperLinkControl.NavigateUrl
属性访问与其关联的网址。
如果您使用波浪形/波浪线(这很好)将链接存储在资源中,那么您可以将波形替换为您的应用位置。如果你有一个控件/页面,那么你可以很容易地调用它的ResolveURL方法(它采用波形符并自动替换它)如果你没有带上下文的控件/页面引用,那么有一些现有的解决方案,然后有一些讨论到在此处执行此操作:ResolveUrl without an ASP.NET Page
答案 1 :(得分:0)
我想这就是你想要的:
Server.MapPath("~/page.aspx")
这将适用于您的aspx和您的代码隐藏。