none
WebResourceへの静的ファイル(cssファイル,jsファイル)の埋め込み方法について RRS feed

  • 質問

  • DLL内に静的ファイル(cssファイル,jsファイル)を埋め込み、WebResourceとして利用するために、以下の手順を実施しましたが

    WebResource内の静的ファイルの内容の参照がうまくできません。どこに問題があるがご教授いただけませんでしょうか?

    以下のWebResApl側から、WebResAplのDLL内に埋め込まれたリソースを利用する前提です。

     

    環境は、VS2005   asp.net2.0/vb.netとなります。

     

    クラスライブラリ:WebResApl を作成

     1)a.css,b.jsをプロジェクトに追加

     2)上記ファイルのプロパティで、ビルドアクションを「埋め込まれたリソース」に設定

     3)以下のダミークラスを作成

        Imports System.Web

        Imports System.Web.UI

        Imports System.Security.Permissions

             'WebResourceの定義

        <Assembly: WebResource("a.css","text/css")>

        <Assembly: WebResource("b.js","application/x-javascript")>

     

             <AspNetHostingPermission(SecurityAction.Demand)> _

         Public Class TestResource

     

              End Class

     

     上記DLLのWebResourceを利用するWebプロジェクト:WebResAplを作成

     Partial Public Class _Default

          Inherits System.Web.UI.Page

          Protected Sub Page_Load(・・・)

     

              Dim cssName As String = "a.css"

              Dim jsName As String = "b.js"

              Dim cs As ClientScriptManager = Page.ClientScript

              Dim rsType As Type = GetType(WebResAsm.TestResource)

              cs.RegisterClientScriptResource(rsType,cssName)

              cs.RegisterClientScriptResource(rsType,jsName)

          End Sub

    とし、上記画面のDefault.aspx内にボタンを配置し、b.js内に含まれるjavascriptの関数

    WebRscCall()をボタンのOnClientClickに指定しましたが、実行するとボタンを押した

    時に、WebRscCall()の場所で、「JScriptの実行時エラー:オブジェクトを指定してください。」

    となります。

     

    なお、ダウンロードされたhtmlは以下となります。

        ・

    <body>

        <form name="form1" method="post" action="Default.aspx" id="form1">

        <div>

        <input type="hidden" name="__VIEWSTATE" ・・・

        </div>

        <script src="/WebResource.axd?d=・・・" type="text/javascript"></script>

        <script src="/WebResource.axd?d=・・・" type="text/javascript"></script>

        <div>

        <input type="submit" name="Button1" value="Button" onclick="WebRscCall();" id="Button1" />

        ・

     

    2008年9月2日 8:34

回答

  • さっそくの返信ありがとうございました。

    WebResource側の指定と、RegisterClientScriptResourceの双方の指定に、

    アセンブリ名.ファイル名 としたら正常に動作しました。

    ありがとうございました。

     

    2008年9月2日 9:20

すべての返信

  • こんにちは

     

    cssName,jsNameですが、ファイル名だけではなく、"アセンブリ名.ファイルまでのパス"とすればうまくいきませんか?

     

    WebResApl.a.css, WebResApl.b.jsのようにです。
    2008年9月2日 8:59
  • ご回答ありがとうございます。

    さっそく

              Dim cssName As String = "WebResAsm.a.css"

              Dim jsName As String = "WebResAsm.b.js"
    としてみましたが、結果は同様でした。

     

    2008年9月2日 9:04
  • WebResourceもアセンブリ名.リソースのパスとして見てください。

     

    <Assembly: WebResource("WebResAsm.a.css","text/css")>

    <Assembly: WebResource("WebResAsm.b.js","application/x-javascript")>

     

    2008年9月2日 9:11
  • さっそくの返信ありがとうございました。

    WebResource側の指定と、RegisterClientScriptResourceの双方の指定に、

    アセンブリ名.ファイル名 としたら正常に動作しました。

    ありがとうございました。

     

    2008年9月2日 9:20