Tilde Slash Paths在MVC 4中不起作用

Jos*_*ltz 9 razor asp.net-mvc-4

根据我的理解,一个简单的"〜/ foo"路径应该像MVC 4中的@ Url.Content("〜/")一样工作.但是,我正在尝试这样做并获得许多破碎的路径 -输出HTML时,代字号仍然存在.

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

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

提供的HTML看起来像这样:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

我很确定我也将这个作为一个MVC 4项目运行.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>
Run Code Online (Sandbox Code Playgroud)

......在这一点上,我不确定下一步该寻找什么.有什么建议?

Ric*_*ett 17

这可能是由于Razor V2中一个错误导致的,HTML注释中的撇号/单引号会破坏~路径的分辨率.

解决方法是使用Razor注释而不是HTML注释.即,替换<!-- Here's your comment-->@* Here's your comment *@.

对不起,这是一个很长的镜头,因为我不知道你是否有HTML评论,更不用说包含单引号的评论了.


Sli*_*SFT 7

我的猜测是你还在运行Razor 1(MvcWebRazorHostFactory<4.0).

验证Views文件夹中的web.config 看起来像这样......

 <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)


And*_*rby 5

当我将一些示例代码剪切并粘贴到视图中时,我遇到了这个问题.原来我有错误类型的波浪号!

@{
Layout = "?/Views/_BasicLayout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

VS

@{
Layout = "~/Views/_BasicLayout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

微妙的不同 - 寻找的草皮


Jos*_*ltz 4

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