¿Cómo obtener enlaces a direcciones URL en texto en ASP.NET MVC 4 con sintaxis Razor?

Tengo un modelo con un campo de texto. El textopuede contienen varias URLs. No tiene que contener URL y no tiene un formato específico.

Utilizando

@Html.DisplayFor(model => model.TextWithSomeUrls)

El texto y las URL se muestran como texto normal, por supuesto. Sin embargo, me gustaría que las URL se muestren como enlaces individuales en funcionamiento. ¿Hay un método auxiliar para esto en ASP.NET / Razor?

Editar: En este momento la salida es:

http://www.google.com, foo: bar;  http://www.yahoo.com

Que es exactamente el contenido del campo de texto.

Pero quiero obtener las URL y solo las URL representadas como enlaces como este:

<a href="http://www.google.com">http://www.google.com</a>, foo: bar; <a href="http://www.yahoo.com">http://www.yahoo.com</a>

Mi solución:

public static partial class HtmlExtensions
{
    private const string urlRegEx = @"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?)";

    public static MvcHtmlString DisplayWithLinksFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
    {
        string content = GetContent<TModel, TProperty>(htmlHelper, expression);
        string result = ReplaceUrlsWithLinks(content);
        return MvcHtmlString.Create(result);
    }

    private static string ReplaceUrlsWithLinks(string input)
    {
        Regex rx = new Regex(urlRegEx);
        string result = rx.Replace(input, delegate(Match match)
        {
            string url = match.ToString();
            return String.Format("<a href=\"{0}\">{0}</a>", url);
        });
        return result;
    }

    private static string GetContent<TModel, TProperty>(HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
    {
        Func<TModel, TProperty> func = expression.Compile();
        return func(htmlHelper.ViewData.Model).ToString();
    }
}

Esta extensión ahora se puede utilizar en vistas:

@Html.DisplayWithLinksFor(model => model.FooBar)

Respuestas a la pregunta(4)

Su respuesta a la pregunta