カスタムASP.netコントロール(.ascx)のリソースファイルInvalidOperationException

asp.net resources
カスタムASP.netコントロール(.ascx)のリソースファイルInvalidOperationException

resxファイルから取得したいテキストを含むコントロールがあり、ControlName.ascx.resxというファイルを作成できると思ったが、うまくいかないようだ。

私は使っています

label1.InnerText = (string)GetLocalResourceObject("default");

リソースファイルから値を取得しますが、InvalidOperation Exceptionをスローし続けます。

resxファイルがどのように機能するのか、それともPagesでのみ機能するのかについて正しいですか?

aspxページで同じコードを使用しています。

  1  1


ベストアンサー

ユーザーコントロール内から GetLocalResourceObject`を呼び出すとき、実際には TemplateControl.GetLocalResourceObject`を呼び出しています。これはリソースファイルの間違った場所を探します。 代わりに `HttpContext.GetLocalResourceObject`を呼び出す必要があります。

protected string HttpContextGetLocalResourceObjectAsString(string message)
{
  string path = HttpContext.Current.Request.Path;
  return (HttpContext.GetLocalResourceObject(path, message) as string);
}

今あなたはできる

label1.InnerText = HttpContextGetLocalResourceObjectAsString("default");

4


ドキュメントごとに:

_
ページレベルのリソースを取得します
_

編集-追加

web.configに文字列を追加し、そこから取得するだけで作業が少なくなる場合があります。

...

” ” ‘

次のように参照されます。

logger.SystemId = System.Configuration.ConfigurationManager.AppSettings["LoggingSystemId"];

もちろん、System.Configuration dllへの参照が必要になります。

0


1年ほど後ですが、これがあなたの目標だと思いますか?

var resource = HttpContext.GetLocalResourceObject(TemplateControl.AppRelativeVirtualPath, termType.ToString());

それが1つであれば答えをマークしてください!

0


タイトルとURLをコピーしました