6

リソースファイルからErrorMessage自分のをロードしたいと思います。CustomValidator

私は次のようにCustomValidator設定しています:

<asp:CustomValidator ID="cv1" runat="server" ControlToValidate="txt1" 
        ErrorMessage="TEXT TO BE LOCALIZED" OnServerValidate="cv1_Validate" />

そして、私の検証方法は次のとおりです。

protected void cv1_Validate(object source, ServerValidateEventArgs e)
{
    if (FalseCondition)
    {
        e.IsValid = false;
    }
    else
    {
        e.IsValid = true;
    }
}

検証は正しく機能しErrorMessageますが、ローカルリソースファイルからプルする必要があります。

編集:を使用してこれを行う方法があるかどうかも興味がありますmeta:resourcekey

4

2 に答える 2

13

ページ(またはコントロール)のローカルリソースがあるとすると、これがその方法になります

ErrorMessage="<%$ resources:ResourceName %>"

グローバルリソースファイルからテキストを取得する場合は、次のようにする必要があります

ErrorMessage="<%$ resources:Strings, ResourceName %>"

Stringsファイルの名前はどこにありますか。このアプローチは、明示的なローカリゼーションと呼ばれます。

編集

を使用できますmeta:resourcekey。これは暗黙的なローカリゼーションと呼ばれます。このアプローチはグローバルリソースには有効ではないため、ローカルリソースが必要になります。

  1. 次の基準を満たすローカルリソースファイル(.resxファイル)があることを確認してください。

    • それらはApp_LocalResourcesフォルダーにあります。

    • ベース名はページ名と一致します。

    たとえば、Default.aspxという名前のページで作業している場合、リソースファイルの名前はDefault.aspx.resx(デフォルトのリソース用)、Default.aspx.es.resx、Default.aspx.es-mx.resx、等々。

    • ファイル内のリソースは、命名規則resourcekey。"property"を使用します。

    たとえば、キー名Button1。"Text"。

  2. コントロールマークアップで、暗黙的なローカリゼーション属性を追加します。

    例えば:

    <asp:Button ID = "Button1" runat = "server" Text = "DefaultText" meta:resourcekey = "Button1" />

ソース:MSDN

于 2012-08-29T14:59:09.517 に答える
1

コードビハインドでそれを実行したい場合は、以下を使用できます。

ResourceManager resmgr = new ResourceManager("YourApplication.YourBaseResourceFile ", 
                              Assembly.GetExecutingAssembly());

protected void cv1_Validate(object source, ServerValidateEventArgs e) 
{   

if (FalseCondition)  
   {  
       CultureInfo ci = Thread.CurrentThread.CurrentCulture;    
       String str = resmgr.GetString("Error Msg Key in Resource File");
       cv1.ErrorMessage =str;      
       e.IsValid = false; 
    }     
else   
  {   
     e.IsValid = true;  
   } 
} 
于 2012-08-31T17:18:39.157 に答える