asp.net - 为什么 MVC 会自动扩展虚拟 URL?

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

则该 URL 不会展开。

ASP.NET MVC 的哪一部分自动解析 HTML,有没有办法控制它?

最佳答案

这是 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")" />

关于asp.net - 为什么 MVC 会自动扩展虚拟 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21161924/

相关文章:

javascript - 绕过验证jquery

razor - MVC 4 Bootstrap 模态编辑\详细信息

c# - JqG​​rid 搜索选项 : toolbarsearch vs standard search window

javascript - 如何在重定向后立即执行 JavaScript 操作?

ruby-on-rails - 在 Windows 上为网站使用 rails 或 ASP.NET

asp.net-mvc - Grid into Grid Popup Editor - 在子网格中传递 ID 参数

c# - 加载图像显示 ASP.NET 中的所有服务器端请求以及客户端请求

C# 从 SettingsPropertyCollection 获取属性

asp.net - 确定 Request.Files 中项目的对应字段名称?

c# - 如何从 Controller 触发弹出确认