2010-09-30 3 views
0

Если текст идет из базы данных, такие как:Вывод текста с гиперссылками

"New Apple TV Offers 8 GB of Internal Storage, 256 MB RAM http://t.co/fQ7rquF" 

Есть ли вспомогательный метод, который принимает этот текст и обертывания веб-адрес в качестве тега привязки?

ответ

1

Сверху моей головы Я бы запускал регулярное выражение, чтобы соответствовать шаблону связи и бросать вокруг него привязывающие метки.

Найдено this на Google:

using System.Text.RegularExpressions; 

public string ConvertURLsToHyperlinks(string sInput) 
{ 
    return Regex.Replace(sInput, @"(\bhttp://[^ ]+\b)", @"<a href=""$0"">$0</a>"); 
} 

Он ищет "HTTP: //", а затем ничего, что не пространство, разделенные границами слова.

+1

Это будет работать в примере, указанном в вопросе, но многие URL-адреса в реальном мире заканчиваются косой чертой ('/') или другими символами пунктуации, и ваше регулярное выражение не будет соответствовать этому. – Timwi

+0

Это действительно не работает. Я скопировал RegEx из ссылки, которую дал Кевин, и это сработало - Regex.Replace (sInput, @ "(\ bhttp: // [^] + \ b)", @ "$0"); – Jon

+0

@Timwi - как мы можем изменить Regex, чтобы исправить это? – Jon

1

я считаю, что нет такого вспомогательного метода, но и может создать один

public static class helper{ 
public static string AnchorHelper(this htmlHelper helper, string text) 
{ 
    //here u can use kevin's function to generate anchors 
    return ConvertURLsToHyperlinks(text); 
} 
} 

вы должны добавить соответствующее пространство имен в Уре зрения и то и можно просто использовать его, как и других HTML хелперы

<%=Html.AnchorHelper(TextwithUrls)%> 
+0

Класс должен быть помечен 'static' для методов расширения, которые должны быть разрешены в нем. – Timwi

+0

@Timwi благодарит за исправление. обновил ответ –

Смежные вопросы