2

私はいくつかの javascipt を使用したいグリッド コントロールを開発しています。クラス ライブラリ プロジェクトに js ファイルを追加し、そのビルド アクションを「埋め込みリソース」に設定しました。しかし、js/jquery 関数 (js ファイルに実装) はアクセスしていません。また、その dll を使用している他のプロジェクトに含まれている js ファイルを表示できません。これを期待してすべて正常に動作しています。

助けてください。

4

3 に答える 3

5

に Action メソッドを用意しますController。リフレクションを使用すると、resourceName を読み取り、それを として返すことができますFileStreamResult。ビューで、スクリプトパスを次のように追加します/Controller/Action/actualjsfile.js

このブログ投稿も参照してください

次のようにテストされたサンプルの手順

クラス ライブラリ プロジェクト (JSDLL) の作成

埋め込みリソースとして追加TestJS.js(以下に示すファイルの内容)

function MyAlert() {
    alert("Hello! this is from the dll");
}

AssemblyInfo.cs に以下を追加します (System.Web.dll への参照を追加する必要があります)。

[assembly: System.Web.UI.WebResource("JSDLL.TestJS.js", "application/x-javascript")]

クラス ライブラリ プロジェクトをコンパイルし、MVC プロジェクトへの参照として追加する

コントローラーに次のアクションを追加します (ブログ投稿と同じですが、わずかな変更があります)。

    public FileStreamResult ContentFile(string id)
    {
        string resourceName = Assembly.GetAssembly(typeof(JSDLL.Class1)).GetManifestResourceNames().ToList().FirstOrDefault(f => f.EndsWith(id));
        return new FileStreamResult(Assembly.GetAssembly(typeof(JSDLL.Class1)).GetManifestResourceStream(resourceName), "text/javascript");
    }        

.jsテストするシンプルなビュー(ファイルがどのように参照されているかを見てください。ファイルonClickから関数を呼び出してい.jsます)

@{
    ViewBag.Title = "About Us";
}

<h2>About</h2>
<p>
     Put content here.     
     <button type="button" onclick="MyAlert()">Text</button>
</p>

<script type="text/javascript" src="/Home/ContentFile/TestJS.js"/>

出力

ここに画像の説明を入力

編集済み(マシューのコメント用)

ここにいくつかのスクリーンショットがあります

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

于 2012-06-07T13:52:47.000 に答える
0

CSS/JS を DLL に埋め込みたい場合は、単にファイル名を使用するのではなく、別の方法でそれらを参照する必要があります。詳細については、 http://www.karpach.com/Custom-ASP-NET-server-control-with-embedded-resources.htmを参照してください(これは ASP.NET 2.0 用ですが、開始するためのアイデアが得られるはずです。と)。

また、これらのリソースを埋め込む必要があるかどうかについては、この [stackoverflow question] を確認してください。

[1] Web アプリケーションに CSS/JavaScript ファイルを埋め込む必要がありますか?

于 2012-06-07T11:52:09.120 に答える
0

「埋め込みリソース」は、jsファイルを dll の一部にするため、他のプロジェクトで表示することはできません。

jsファイルは JavaScript コードからのアクセスであると想定されており、dll に埋め込む必要はありません。

于 2012-06-07T11:38:03.803 に答える