Razor 平铺斜线路径在MVC4中不起作用

Razor 平铺斜线路径在MVC4中不起作用,razor,asp.net-mvc-4,Razor,Asp.net Mvc 4,例如,普通的ol'~/foo”路径应该像MVC4中的@Url.Content(“~/”)一样工作。然而,我正在尝试这样做,并且得到了许多断开的路径——当HTML输出时,tilde仍然存在 例如,我在/Views/Shared/_Layout.cshtml中有一个路径: <link href="~/Content/Site.css" rel="stylesheet" type="text/css" /> 交付的HTML如下所示: <link href="~/Content/

例如,普通的ol'~/foo”路径应该像MVC4中的@Url.Content(“~/”)一样工作。然而,我正在尝试这样做,并且得到了许多断开的路径——当HTML输出时,tilde仍然存在

例如,我在/Views/Shared/_Layout.cshtml中有一个路径:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />

交付的HTML如下所示:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />

我很确定我也把它作为MVC4项目来运行。web.config中包含以下内容:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>


…在这一点上,我不确定下一步要寻找什么。有什么建议吗?

我猜您仍然在运行Razor1(
MvcWebRazorHostFactory
is<4.0)

验证视图文件夹中的web.config是否如下所示


使用独立安装程序重新安装MVC4(RC)为我解决了这个问题。我仍然不明白是什么导致了这个问题,但我可以接受。

问题是关于
href=
,而不是关于哪个

示例:

< img src="@Url.Content("Images/someImage.jpg")"/>
< a href="@Url.Content("Home/About")" >click here< /a>

单击此处

可以将
@
嵌套在其他
@section{}

中,这可能是由于HTML注释中的撇号/单引号破坏了
~
路径的解析

解决方法是使用Razor注释而不是HTML注释。也就是说,将
替换为
@*这是您的评论*@


很抱歉,这是一个长期的问题,因为我不知道您是否有HTML注释,更不用说包含单引号的注释了。

解决这一问题的方法是关闭Meleze.web HTML缩小功能。

对我来说,问题只与SVG图像类型有关。通过将以下内容添加到项目的web.config文件(而不是视图MVC4使用的web.config)解决了此问题


我在将一些示例代码剪切并粘贴到视图中时遇到了这个问题。 原来我用错了瓷砖

@{
Layout = "∼/Views/_BasicLayout.cshtml";
}
vs


微妙的不同-为了找到MVC 5和Razor 3的

,我的问题是在一个html元素中有一个额外的引号字符,它出现在img标记之前(很久以前!):

<div class="foo""> <!-- note the extra quote character here ugh -->
...
</div>
...
<img src="~/images/an-image.png" />

听起来您仍然在使用Razor 1,您可以尝试创建一个MVC 4 Internet应用程序并尝试此功能吗?如果您只是将引用更改为MVC4,那么您可能没有使用@SilverNinja提到的Razor 2。我尝试创建一个新的MVC4应用程序,但该功能仍然失败。将尝试重新安装MVC4。如果您使用的是MVC4,您应该能够获得。你能试着捆绑你的CSS吗?否决票可能是因为这种语法不再需要了。Scott是对的,但从技术上讲,如果你意外使用了Razor1,Peter的解决方案仍然有效。不过,最好只安装Razor2我也被这件事挂掉了。我正在处理的页面中有一条html注释,其中只有一个“in”。删除注释中的“or adding a second”可以解决此问题。这就是我的原因:-->在页面顶部添加额外的破折号来结束注释。
@{
Layout = "~/Views/_BasicLayout.cshtml";
}
<div class="foo""> <!-- note the extra quote character here ugh -->
...
</div>
...
<img src="~/images/an-image.png" />