2014-01-16 19 views
3

在我Layout.cshtml文件我有以下行:为什么MVC自动扩展虚拟URL?

<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> 

那么URL没有展开。

ASP.NET MVC的哪个部分会自动分析HTML,并且有办法控制它?

+4

什么时候你想以'〜/'网址? – CodeCaster

回答

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")" /> 
+0

是否还有关于此处理的更多文档?例如,这可以解释为什么它不会在'