9

私が理解しているように、プレーンなol'"〜/ foo"パスはMVC4の@Url.Content( "〜/")のように機能するはずです。しかし、私はこれを実行しようとして、多くの壊れたパスを取得しています- HTMLが出力されるとき、チルダはまだそこにあります。

したがって、たとえば、/ 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>

...そしてこの時点で、次に何を探すべきかわかりません。助言がありますか?

4

8 に答える 8

17

これは、Razor V2のバグの結果である可能性があり、HTMLコメントのアポストロフィ/一重引用符が~パスの解決に失敗します。

回避策は、HTMLコメントの代わりにRazorコメントを使用することです。つまり、に置き換え<!-- Here's your comment-->ます@* Here's your comment *@

申し訳ありませんが、これはロングショットです。一重引用符を含むコメントは言うまでもなく、HTMLコメントがあるかどうかはわかりません。

于 2013-07-25T10:49:32.837 に答える
7

私の推測では、あなたはまだRazor 1を実行しています(MvcWebRazorHostFactory<4.0)。

ビューフォルダの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>
于 2012-06-01T15:58:57.243 に答える
5

いくつかのサンプルコードをカットアンドペーストしてビューに貼り付けると、この問題が発生しました。私は間違ったタイプのチルダを持っていたことが判明しました!

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

vs

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

微妙に異なる-見つけるためのsod

于 2015-01-27T20:07:34.260 に答える
4

ここでスタンドアロンインストーラーを使用してMVC4(RC)を再インストールすると、この問題が解決しました。何が問題を引き起こしたのかはまだわかりませんが、それで生きることはできます。

于 2012-06-01T16:15:38.967 に答える
1

私にとって、問題はSVG画像タイプにのみ関連していました。プロジェクトのweb.configファイルに以下を追加することで解決しました(ビューで使用されるweb.config、MVC4ではありません)。

<configuration>
   <system.webServer>
      <staticContent>
         <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      </staticContent>
   </system.webServer>
</configuration>
于 2014-03-31T11:17:37.053 に答える
1

MVC5とRazor3の場合、私にとっての問題は、imgタグの前(ずっと前に!)にあるhtml要素の余分な引用文字であることが判明しました。

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

上記の問題により、かみそりはチルダ(〜)を無視し、ブラウザにそのまま/変換されませんでした。問題を見つけるために私を永遠に連れて行きました。最終的には、imgタグをファイルの先頭に移動し、そこで正常に機能することを発見し、分割統治法を実行して*.cshtmlの場所を絞り込みました。動作を停止したファイル。

この投稿が誰かの時間を節約することを願っています!

于 2019-10-09T19:21:43.047 に答える
0

問題は約href=であり、どの< tag >
例ではありません:

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

@他の中に入れ子にして大丈夫@section {}

于 2012-10-05T10:34:53.033 に答える
0

私にとってこれを解決したのは、Meleze.webHTMLMinificationをオフにすることでした。

于 2013-09-06T08:52:29.240 に答える