将文本中的链接更改为控制器中的超链接

时间:2013-06-19 13:10:02

标签: asp.net-mvc model-view-controller

我无法将文本转换为控制器中的超链接,然后将其发送到视图。

到目前为止,我有:
控制器:

foreach (dynamic tweet in Timeline())
{
    string text = tweet["text"].ToString();
    const string pattern = @"http(s)?://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?";
    Regex regexCheck = new Regex(pattern);

    MatchCollection matches = regexCheck.Matches(text);

    for (int i = 0; i < matches.Count; i++)
    {
        text = string.Format(@"<a href={0}>{1}</a>", matches[i].Value, matches[i].Value);
    }

    timeline.Add(text);
}

查看:

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

但它一直显示文字文字!
显示:<a href=http://t.co/fm0ruxjVXe>http://t.co/fm0ruxjVXe</a>

有谁能告诉我这是怎么做到的?我对MVC很新。

2 个答案:

答案 0 :(得分:3)

因为你已经发送了html,试试

 @Html.Raw(Model.Timeline)

另一种选择是仅发送网址和文本,并在视图中构建标记

 <a href="@Model.Timline.Url">@Model.Timeline.Text</a>

这将涉及将您的时间轴属性更改为具有两个属性(文本和网址)的对象。

答案 1 :(得分:0)

Razor中的@ Html.DisplayFor助手自动编码输出

如果您只想输出model.Timeline的内容,请尝试使用Response.Write