之前我问过类似的问题,我需要将链接更改为其他内容,但实际上我需要缩短链接而不是替换它。
所以我需要缩短链接,当它们超过...说... 50个字符。我知道如何更改链接,但无法弄清楚如何缩短链接。
例如:http://www.google.com会缩短为http://google ...
我的代码:
<%# BuildLink(Eval("TaskDefinition.Url").ToString(),Eval("TaskInstanceID").ToString())%>
我已经完成了这项工作,取代了链接。但我需要缩短它,而不是取而代之。
<asp:HyperLink runat="server"
NavigateUrl='<%# BuildLink(Eval("TaskDefinition.Url").ToString(), Eval("TaskInstanceID").ToString())%>'>
My Link
</asp:HyperLink>
我的BuildLink
方法:
public string BuildLink(string baseUrl, string taskInstanceId)
{
if (!string.IsNullOrEmpty(baseUrl))
{
string parms =
"taskinstanceid=" + taskInstanceId +
"&callback=" + GetCallBackUrl();
string url = baseUrl.Contains("?")
? baseUrl + "&" + parms
: baseUrl + "?" + parms;
bool isUnc = false;
try
{
Uri uri = new Uri(baseUrl);
isUnc = uri.IsUnc;
}
catch { }
string link;
if (isUnc)
{
link = "<a href='" + baseUrl + "' >" + baseUrl + "</a>";
}
else
{
link = "<a href='" + url + "' >" + baseUrl + "</a>";
}
return link;
}
return "";
}
这是当前的观点。它所属的一切
这是用JF代码生成的视图
此外,即使链接不是50&gt;,链接也会缩短。这很奇怪...我不喜欢asp中继器。
答案 0 :(得分:1)
<asp:Hyperlink>
还可让您设置要显示的文字。与构建链接的方式类似,您也可以修剪文本。
首先,设置text
属性。您还可以删除超链接标记之间的文本,因为text
属性会为您执行此操作。
<asp:HyperLink runat="server"
NavigateUrl='<%# BuildLink(Eval("TaskDefinition.Url").ToString(), Eval("TaskInstanceID").ToString())%>'
Text='<%# TrimLink(Eval("TaskDefinition.Url").ToString(), Eval("TaskInstanceID").ToString())%>'>
</asp:HyperLink>
然后,在方法后面创建代码。在此方法中,您是否逻辑获取将要显示的URL的完整文本。检查该文本的长度。如果长度超过50,Substring()
长度为50个字符,并将一些省略号连接到其上。
public string TrimLink(string baseUrl, string taskInstanceId)
{
string urlText = "";
// do your logic to get the full url
if(urlText.Length > 50)
{
urlText = urlText.Substring(0, 50);
urlText = urlText + "...";
}
return urlText;
}
不要返回整个超链接以用作<asp:Hyperlink>
的网址,而是尝试仅返回网址。我想知道是否所有额外的字符都被无意地用作其他控件的关闭。在BuildLink
中,请改为执行此操作。
if (isUnc)
{
link = baseUrl;
}
else
{
link = url;
}
return link;