我想使用此解决方案将URL转换为listview标签中的链接。
private string ConvertUrlsToLinks(string text)
{
string regex = @"((www\.|(http|https|ftp|news|file)+\:\/\/)[_.a-z0-9-]+\.[a-z0-9\/_:@=.+?,##%&~_-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
return r.Replace(text, "<a href=\"$1\" title=\"Open in a new window or tab\" target=\"_blank\">$1</a>").Replace("href=\"www", "href=\"http://www");
}
我在listview数据绑定中尝试了这个但是它没有用。
protected void ProjectRecentActiviyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
Label ProjectPostLabel = (Label)e.Item.FindControl("ProjectPostLabel");
ProjectPostLabel = ConvertUrlsToLinks({0});
}
谢谢
答案 0 :(得分:0)
根据您的代码,您使用的是ASP.NET Web窗体,而不是MVC。
ProjectPostLabel
实例与Text
属性一起使用 - 无需创建未分配给任何地方的新标签。从您的活动中,您必须检索Url属性,而不是标签控件。我在ListView中使用了NorthwindEmployee
类和URL
属性。您必须将其强制转换为列表视图中使用的自己的类。
protected void ProjectRecentActiviyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
ProjectPostLabel.Text = ConvertUrlsToLinks(((NorthwindEmployee)e.Item.DataItem).URL);
}
并且您必须记住,只有列表视图中的最后一项才会显示在标签中(除非您希望这种行为)。如果您想从列表中列出URL,可以写下:
protected void Page_Load(object sender, EventArgs e)
{
ProjectPostLabel.Text = string.Empty;
}
protected void ProjectRecentActiviyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
ProjectPostLabel.Text += string.Format("{0}<br/>", ConvertUrlsToLinks(((NorthwindEmployee)e.Item.DataItem).URL));
}