Razor 平铺斜线路径在MVC4中不起作用
例如,普通的ol'~/foo”路径应该像MVC4中的@Url.Content(“~/”)一样工作。然而,我正在尝试这样做,并且得到了许多断开的路径——当HTML输出时,tilde仍然存在 例如,我在/Views/Shared/_Layout.cshtml中有一个路径: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/
<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" />