我无法将文本转换为控制器中的超链接,然后将其发送到视图。
到目前为止,我有:
控制器:
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很新。
答案 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