在我看来,我正在使用 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 指向某个外部站点,则它不会改变。
我已经验证我传递给 @Html.Raw 的是正确的 URL (http://www.foo.com/events)。为什么它会随着页面呈现而改变?有没有简单的方法来禁用此“功能”?
这是我用于显示标记的代码:
<div>
@Html.Raw(post.Body)
</div>
这是生成页面数据的 Controller 代码:
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 在传回 View 之前的格式为“http://www.foo.com/events”(无尾部斜杠)。我还通过调试器验证了该值在传递到 @Html.Raw 之前没有更改。
最佳答案
听起来指向您网站上其他页面的网址不是绝对的。您确定它们以/
或http
开头吗?如果不是,它的行为完全按照预期,并将它们视为相对 url,从而将它们附加到当前 url。
(Html.Raw
不会操作字符串,因此这里没有错误)
此外,向我们展示您的代码也没什么坏处。
关于asp.net-mvc-3 - ASP.NET MVC3 Html.Raw 改变绝对 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047721/