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)

もう 1 つのオプションは、URL とテキストだけを送信し、ビューでタグを作成することです。

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

これには、タイムライン プロパティを text と url の 2 つのプロパティを持つオブジェクトに変更することが含まれます。

于 2013-06-19T13:13:05.893 に答える
0

Razor の @Html.DisplayFor ヘルパーは、出力を自動的にエンコードします。

model.Timeline の内容だけを出力したい場合は、Response.Write だけを使ってみてください。

于 2013-06-19T13:14:23.150 に答える