私はASP.NET MVC 3とヘルパー@ Html.Rawを私のビューで使用しています。絶対URLを変更するASP.NET MVC3 Html.Raw?
データベースに保存したHTMLマークアップを渡しています。マークアップには、サイトの他の場所を指すURLがいくつか含まれています。たとえば、http://www.foo.fom/eventsです。これらのデータはフォーラム投稿であるため、表示されるページの形式はhttp://www.foo.com/forums/thread/42/slugです。これが唯一の自分のサイトのURLのために起こる
http://www.foo.com/forums/thread/42/events/
:ページがレンダリングされるとき
しかし、保存されたURLは次のように修正された形でレンダリングされています。 URLが外部サイトを指している場合は変更されません。
私は@ Html.Rawに渡すものが正しいURL(http://www.foo.com/events)であることを確認しました。なぜページがレンダリングされると変更されるのですか?この「機能」を無効にする簡単な方法はありますか?ここで
は、マークアップを表示するための私のコードです:
<div>
@Html.Raw(post.Body)
</div>
とこちらのページデータをgenratesコントローラのコードは次のとおりです。
var post = _forumRepository.GetPostById(id)
var model = new ForumPostView()
{
Body = post.Body,
PostDate = post.DatePosted,
PostedBy = post.Author,
PostId = post.Id
};
return View(model);
私はポストの正確なURLことをデバッガ経由で確認しました。ビューに戻される前のボディは、「http://www.foo.com/events」(末尾にスラッシュはありません)の形式です。また、@ Html.Rawに渡される前に値が変更されていないことをデバッガを介して確認しました。
実際のコードを私たちに教えてください。 Html.RawはURLの再マッピングを行わないので、それは何か他のことです。 –
@Mystereが指摘するように、 'Html.Raw'はあなたのデータを操作しません。 'post.Body'の正確な内容を表示してください。恐らくファイルに書き込んで、そのデータが何であるか正確に分かります。 –
これはやや奇妙です。どのようにあなたのビューに "投稿"を設定していますか?それはModel.Bodyではありませんか? –