2012-04-06 67 views
2

我在我的視圖中使用ASP.NET MVC 3和幫助器@ Html.Raw。ASP.NET MVC3 Html.Raw更改絕對URL?

我把它傳遞給我存儲在數據庫中的一些HTML標記。該標記包含一些指向我網站上其他位置的網址。例如http://www.foo.fom/events。這些數據是論壇帖子,因此它們顯示的頁面格式爲http://www.foo.com/forums/thread/42/slug

然而,當頁面呈現,保存的網址是在修改的形式呈現爲:

http://www.foo.com/forums/thread/42/events/

這只是發生在我的網站的網址。如果網址指向某個外部網站,則不會改變。

我已驗證我傳入@ 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); 

我已經通過調試驗證了在後的確切地址。在傳遞迴視圖之前,Body是「http://www.foo.com/events」形式(無尾隨斜線)。我還通過調試器驗證了該值在傳遞到@ Html.Raw之前是否保持不變。

+0

向我們顯示您的實際代碼。 Html.Raw不會執行任何Url重新映射,所以它是其他事情正在做的事情。 – 2012-04-06 19:09:29

+0

正如@Mystere指出的那樣,'Html.Raw'不能操縱你的數據。請向我們展示'post.Body'的確切內容 - 也許將它寫入一個文件,以便我們確切知道數據是什麼。 – 2012-04-06 20:41:06

+1

這有點奇怪。你如何在你的視圖中設置「發佈」?這不應該是Model.Body嗎? – 2012-04-06 20:43:48

回答

1

這聽起來像指向您網站上的其他網頁的網址是非絕對的。你是某些他們開始/http?如果不是,它的行爲完全按照它的設想進行,並將它們視爲相對URL,並將它們附加到當前網址。

Html.Raw不會操作字符串,因此它在故障不在這兒)

而且,它不會傷害到我們展示你的代碼。

1

不,其實我是個白癡。這些URL實際上是以相對的形式存儲的,沒有前導/,這就是爲什麼它們最終與當前頁面相關。顯示的文本是絕對的,這是我在查看數據庫時看到的。這就是我在幾個小時的睡眠時進行調試所得到的結果;)

+0

嘿,發生在我們所有人身上。 :)感謝您報告回來! – 2012-04-07 00:20:41