为什么MVC会自动扩展虚拟URL?

时间:2014-01-16 12:34:32

标签: asp.net asp.net-mvc razor

在我的Layout.cshtml文件中,我有以下一行:

<link rel="stylesheet" href="~/Content/bootstrap.css" />

我的假设是,由于我没有包含Url.Content()调用,它实际上只是渲染我写的内容而不是自动展开虚拟URL。这个假设是错误的 - 生成的HTML确实包含文件的正确路径,而不是我输入的虚拟路径。

如果我将<link>包裹在<script>

<script type="text/html">
    <link rel="stylesheet" href="~/Content/bootstrap.css" />
</script>

然后不会展开网址。

ASP.NET MVC的哪一部分可以自动解析HTML并且有办法控制它吗?

1 个答案:

答案 0 :(得分:3)

这是Razor2和ASP.NET MVC 4中的一项新功能,旨在通过不必在任何地方使用Url.Content来简化生活。

http://www.davidhayden.me/blog/asp.net-mvc-4-the-new-tilde-slash-feature-in-razor-2

该功能仅适用于标准 HTML属性,这就是为什么你不能将它放在<script>标签内或其他任何地方。

您可以使用简单的输出写入来解决此问题:

<link rel="stylesheet" href="@("~/Content/bootstrap.css")" />
相关问题