2012-04-06 13 views
2

私は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に渡される前に値が変更されていないことをデバッガを介して確認しました。

+0

実際のコードを私たちに教えてください。 Html.RawはURLの再マッピングを行わないので、それは何か他のことです。 –

+0

@Mystereが指摘するように、 'Html.Raw'はあなたのデータを操作しません。 'post.Body'の正確な内容を表示してください。恐らくファイルに書き込んで、そのデータが何であるか正確に分かります。 –

+1

これはやや奇妙です。どのようにあなたのビューに "投稿"を設定していますか?それはModel.Bodyではありませんか? –

答えて

1

あなたのサイトの他のページを指しているURLは絶対的ではないようです。 ある/またはhttpで始まりますか?そうでない場合、それは想定されているとおりに動作し、相対URLのように扱います。したがって、現在のURLに追加します。

また、それは私達にあなたのコードを表示するために損はない

Html.Rawは、文字列を操作しませんので、ここでは、故障ではありません)。

1

いいえ、実際は私はばかです。 URLは実際には/を付けずに相対形式で格納されていたため、現在のページとの相対的な位置関係になってしまいました。表示されるテキストは絶対的なものでしたが、これはdbを見たときに見たものです。それは私が数時間の睡眠でデバッグするためのものです);

+0

Heh、私たちすべてに起こった。 :)報告してくれてありがとう! –

関連する問題