ビューで ASP.NET MVC 3 とヘルパー @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>
ページデータを生成するコントローラーコードは次のとおりです。
var post = _forumRepository.GetPostById(id)
var model = new ForumPostView()
{
Body = post.Body,
PostDate = post.DatePosted,
PostedBy = post.Author,
PostId = post.Id
};
return View(model);
ビューに戻される前の post.Body の正確な URL が「http://www.foo.com/events」の形式であることをデバッガーで確認しました (末尾のスラッシュはありません)。また、@Html.Raw に渡される前に、値が変更されていないことをデバッガーで確認しました。