18

Razor 構文を使用する C# MVC プロジェクトがあります。
一部のコードを再利用できるようにするために、JavaScript ファイルと CSS ファイルの一部を別のプロジェクトに配置し、何らかの方法でそれらを含めたいと考えています。
これは、現時点で私のスクリプトがどのように含まれているかです:

<script src="@Url.Content("~/Scripts/bootstrap-typeahead.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/bootstrap-dropdown.js")" type="text/javascript"></script>

現時点では、スクリプトはcshtmlファイルと同じプロジェクトにありますが、代わりにCommon.Webプロジェクトに配置する必要があります...
私がやりたいのはこれです(ただし動作​​しません):

<script src="@Url.Content("Common.Web/Scripts/bootstrap-typeahead.js")" type="text/javascript"></script>
<script src="@Url.Content("Common.Web/Scripts/bootstrap-dropdown.js")" type="text/javascript"></script>
4

4 に答える 4

7

私の知る限り、パスは Web サイトの外にあるため、これを行うことはできません。

ただし、次のことはできます。

1) 共有したいすべてのスクリプトを Common.Web\Scripts に置きます
2) Web アプリケーションの各スクリプト ファイルを、Common.Web スクリプトに「リンクとして追加」します (この手順を実行する必要さえありません。ただし、Web アプリが VS で使用するスクリプトを確認すると便利です)
3) Common.Web\Scripts から WebApp\Scripts フォルダーにスクリプトをコピーするビルド後のイベントを Web アプリケーションに追加します。

$(ProjectDir)..\Common.Web\Scripts* $(ProjectDir)\Scripts をコピーします。

そのため、Visual Studio の観点からは、複数のプロジェクトで使用できる .js ファイルを更新する場所が 1 か所しかありません。

于 2012-08-07T12:17:50.023 に答える
2

ヘルパーを使用する代わりに、Url相対アドレス指定を使用します。ヘルパーはプロジェクトに関連するパスを解決するために使用されるため、何をしようとしても意味がありません。

別のプロジェクトのリソースを使用しようとしているので、各プロジェクトをデプロイする場所を事前に知っていると仮定しても問題ありません。私はこの慣行が好きではありませんが、これに対する実用的な解決策を考えることができます。


2 つのアプリケーションが URL にある場合:

http://www.mysite.com/app1
http://www.mysite.com/Common.Web

次のように対処できます。

<script src="@Url.Content("~")/../Common.Web/Scripts/bootstrap-typeahead.js")" type="text/javascript"></script>

つまり、アプリのルート フォルダーを解決し、レベルを上げて、残りのパスを下ります。

于 2012-08-07T14:26:02.493 に答える