C# 缩短使用asp:repeater和Buildlink(Eval)创建的链接

C# 缩短使用asp:repeater和Buildlink(Eval)创建的链接,c#,asp.net,C#,Asp.net,我以前也问过类似的问题,我需要把链接改成其他东西,但我实际上需要缩短链接而不是替换它 <asp:HyperLink runat="server" NavigateUrl='<%# BuildLink(Eval("TaskDefinition.Url").ToString(), Eval("TaskInstanceID").ToString())%>'> My Link </asp:HyperLink> 所以我需要缩短链接,当它们超

我以前也问过类似的问题,我需要把链接改成其他东西,但我实际上需要缩短链接而不是替换它

<asp:HyperLink runat="server"  
    NavigateUrl='<%# BuildLink(Eval("TaskDefinition.Url").ToString(), Eval("TaskInstanceID").ToString())%>'>
    My Link    
</asp:HyperLink>
所以我需要缩短链接,当它们超过…比如…50个字符时。我知道如何更改链接,但不知道如何缩短它

例如:将缩短为

我的代码:

<%# BuildLink(Eval("TaskDefinition.Url").ToString(),Eval("TaskInstanceID").ToString())%>
这是当前视图。它所属的所有内容

这是使用JF提供的代码生成的视图

此外,链接会被缩短,即使它们不是50>,这很奇怪……我不喜欢asp中继器。

一个
还可以让你设置要显示的文本。因此,与构建链接的方式类似,你也可以修剪文本

首先,设置
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,不如尝试只返回URL。我想知道是否所有多余的字符都无意中被用作其他控件的结束符。在
构建链接中,请改为执行此操作

if (isUnc)
{
    link = baseUrl;
}
else
{
    link = url;
}
return link;

谢谢。它能按原样工作吗?是可点击的(尽管没有缩短)出现超链接?我无法想象添加
我很抱歉,我想我误读了你的问题。我假设你想缩短的部分只是链接的文本,而不是实际的链接本身,对吗?我之前评论的问题仍然存在,但是,它只是与手头的问题无关。抱歉。目前链接确实有效,只是在eval()获取的URL下创建名为“我的链接”的链接。我只想缩短链接,但仍然链接到它应该链接的位置。因此在上面的示例中,“…”将仍然链接到will test并返回给您。同时感谢什么不起作用?它似乎对我起作用。您应该能够在其中插入断点并查看值。应该是所有相同的项目,而不是下一个项目,直到您到达下一行。这很奇怪。肯定还有其他问题。文本错误还是我“链接B”的链接文本和链接URL是什么?你期望它是什么?查看我的编辑。试一试。我自己已经测试过了,一切正常。确保你设置了一些断点并调试了它。试着找出你期望的条件在哪里满足/不满足。很好-很高兴我能帮上忙!
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;
}
if (isUnc)
{
    link = baseUrl;
}
else
{
    link = url;
}
return link;