asp.net-mvc-3 - ASP.NET MVC3 Html.Raw 改变绝对 URL?

标签 asp.net-mvc-3 html-helper

在我看来,我正在使用 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/

相关文章:

asp.net-mvc - 反序列化 JSON 时 MVC3 RTM 失败数字类型强制

c# - 在 Jquery 警报中显示表行的所有值

asp.net-mvc - 在自定义HTML帮助器中调用Html.ActionLink

c# - 由于 MultiSelectList 无法将 IEnumerable<SelectListItem> 转换为字符串,Model.State 无效

c# - 修改 ASP.NET MVC 2 中的 HTML Helpers

c# - 什么是对象引用未设置为对象的实例

asp.net-mvc - asp.net MVC 3没有默认页面

c# - 如何在 MVC 3 中使用 LabelFor

css - 编写 MVC 3 应用程序时的表单设计方法

asp.net-mvc - ASP.NET MVC3 AntiForgeryToken