0

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

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

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 很陌生。

4

2 回答 2

3

由于您已经发送了 html,请尝试

 @Html.Raw(Model.Timeline)

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

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

这将涉及将您的时间线属性更改为具有两个属性 text 和 url 的对象。

于 2013-06-19T13:13:05.893 回答
0

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

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

于 2013-06-19T13:14:23.150 回答