2009-08-03 13 views
15

私はasp.net 3.5を使用しています。私のソリューションは現在2つのプロジェクト、APIクラスプロジェクト、ウェブサイトプロジェクトを持っています。クラスプロジェクト内にはcheckin.resxというリソースファイルがあります。私のウェブサイトプロジェクトからリソースファイルにアクセスできるようにするために、私は "Access Modifier"をpublicに設定しなければなりませんでした。これは強く型付けされた名前を使ってリソースにアクセスすることを可能にしました。例えば、CkiApi.Checkin.Resources.Checkin.OCKI_HeaderText。 resxファイルおよびOCKI_HeaderTextはリソースキーです。他のプロジェクトからのresxリソースファイルへのアクセス

私が直面している問題は、ラベルのテキストプロパティや検証エラーメッセージの設定など、フロントエンドのaspxコードからリソースにアクセスできないことです。私は無駄には、次の構文を試してみました:私は取得

<asp:Label AssociatedControlID="IdentMethods" EnableViewState="false" ID="lblIdentMethod" runat="server" Text="<%$ Resources: CkiApi.Checkin.Resources.Checkin, OCKI_IdentificationMethod %>"></asp:Label> 

エラーが

「OCKI_IdentificationMethod」が見つかりませんでしたキーを持つリソースオブジェクトです。

が、そのウェブサイトのプロジェクトで見しようとしているが、私は見て、それを伝える方法を見つけ出すことはできませんので、関係なく、私はクラス名を設定したものの、私は同じエラーを取得し、私はそのことを考えていますAPIで!誰も助けることができますか?私は、次の使用以外のサーバサイドのタグを設定することができる午前

これはあなたの問題を解決しますが、あなたは HttpContext.GetGlobalResourceObject方法を見てきた場合
<div id="OckiIntroText"> 
    <%=CkiApi.Checkin.Resources.Checkin.OCKI_IntroText%> 
</div> 

答えて

17

リソース表現(<%$ Resources: ClassKey, ResourceKey %>)は、シーンの背後でResourceExpressionBuilderクラスを使用します。このクラスでは、グローバルリソースとローカルリソースのみを検索できます(WebサイトのApp_GlobalResourcesApp_LocalResourcesフォルダ内)。

代わりにCodeExpressionBuilderクラスを使用して、異なるプロジェクトのリソースにアクセスできます。それを使用する方法は次のとおりです。

App_CodeフォルダーにCodeExpressionBuilderクラスを追加します。

using System.CodeDom; 
using System.Web.Compilation; 
using System.Web.UI; 

[ExpressionPrefix("Code")] 
public class CodeExpressionBuilder : ExpressionBuilder 
{ 
    public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, 
     object parsedData, ExpressionBuilderContext context) 
    { 
     return new CodeSnippetExpression(entry.Expression); 
    } 
} 

は、web.configファイルでのsystem.web /コンパイルのセクションに次の行を追加します。

<compilation debug="false"> 
    ... 
    <expressionBuilders> 
     <add expressionPrefix="Code" type="CodeExpressionBuilder"/> 
    </expressionBuilders> 
</compilation> 

最後に、あなたは強く型付けされたクラスに呼び出すことができます.resxファイルのために生成されました:

<asp:Label ID="Label1" runat="server" Text="<%$ Code: ClassLibrary1.Resource1.String1 %>" /> 
3

わかりませんか?

私はフレームワークプロジェクトのクラスライブラリから、Webプロジェクトのリソースにアクセスするために使用しました。おそらくあなたはそれを逆に使うことに恵まれています。

+0

あなたの返信ありがとうございますが、残念ながら私はこの機能を信じていますyは<%$ Resources:,%>と同じですが、<%=または<%#タグをサーバー側の属性にバインドすることはできません:( – Raj

関連する問題