Frage

Ich verwende asp.net 3.5, meine Lösung hat derzeit zwei Projekte, ein API-Klasse-Projekt und ein Website-Projekt innerhalb der Klasse Projekt, das ich eine Ressourcendatei mit dem Namen checkin.resx habe. Für mich in der Lage zu sein, die Ressource-Dateien von meinem Website-Projekt zugreifen zu können, hatte ich den „Zugang Modifier“, um die Öffentlichkeit zu setzen, das mir erlaubt, einen stark typisierte Namen zu verwenden, um die Ressourcen zum Beispiel zu dem acces: CkiApi.Checkin.Resources.Checkin.OCKI_HeaderText, wo Checkin das ist. resx Datei und OCKI_HeaderText ist die Ressource-Taste.

Das Problem, das ich mit Blick auf bin ist, dass ich nicht in der Lage bin, die Ressourcen von Front-End aspx Code zuzugreifen, beispielsweise eine Texteigenschaft eines Etikett oder einer Validierungsfehlermeldung einstellen. Ich habe die folgende Syntax ohne Erfolg versucht:

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

der Fehler ich erhalte, ist

  

Das Ressourcenobjekt mit dem Schlüssel 'OCKI_IdentificationMethod' wurde nicht gefunden.

, aber unabhängig davon, was ich die Klassennamen, bekomme ich die gleichen Fehler, ich denke, sein weil sein Versuch, in dem Website-Projekt zu sehen, aber ich kann nicht herausfinden, wie es zu sagen, an der API aussehen ! Kann mir jemand helfen?

Ich bin in der Lage nicht Server-Seite-Tags mit folgenden Einstellungen:

<div id="OckiIntroText">
    <%=CkiApi.Checkin.Resources.Checkin.OCKI_IntroText%>
</div>
War es hilfreich?

Lösung

Resource Ausdrücke (<%$ Resources: ClassKey, ResourceKey %>) verwenden Resource Klasse hinter der Szene. Diese Klasse kann globale und lokale Ressourcen nur Nachschlag (in Website App_GlobalResources und App_LocalResources Ordner).

Sie können stattdessen verwenden CodeExpressionBuilder Klasse für den Zugriff auf Ressourcen aus anderem Projekt. Hier ist, wie es zu benutzen.

In CodeExpressionBuilder Klasse App_Code Ordner:

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);
   }
}

Fügen Sie den folgenden zu system.web / Kompilation Abschnitt in web.config:

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

Schließlich können Sie in rufen stark typisierte Klasse generiert für Ihre RESX-Datei:

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

Andere Tipps

Nicht sicher, ob dies Ihr Problem zu lösen, aber haben Sie bei HttpContext.GetGlobalResourceObject Methode?

Ich habe es verwendet Ressourcen im Web-Projekt zugreifen, von Klassenbibliotheken in einem Rahmenprojekt -. So vielleicht haben Sie Glück es umgekehrt in mit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top