2

私は C#/ASP.NET で小さな Web フォームに取り組んでいます。エラー メッセージを C# クラスの変数に格納したい。このようなもの:

public static class ErrorMessages { 
 public static string fooX = "baa"; 
 // etc..
}

ASPそして、タグのいくつかの属性でそれを連結します。

<asp:RegularExpressionValidator runat="server"
     ControlToValidate="baain"
     ErrorMessage= *ErrorMessages.fooX*
 />

出来ますか?はいの場合、これを行う方法は?

4

3 に答える 3

1

aspx ページで次のことを試すことができます。

ErrorMessage='<%# ErrorMessages.fooX %>'

ページロードコールのコードビハインドでDataBind();

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        DataBind();
    }
}

ページの aspx 部分を連結するかどうかはわかりません。コード ビハインドで、RegularExpressionValidator の ErrorMessage プロパティを設定できます。何かのようなもの:

RegularExpressionValidator1.ErrorMessage = "Your message";

また

RegularExpressionValidator1.ErrorMessage = ErrorMessages.fooX;
于 2012-07-05T02:03:05.100 に答える
1

これに対する 1 つのアプローチは、独自のカスタム式ビルダーを作成することです。

ExpressionBuilder クラスは、ページの解析中にコード式を作成する式ビルダー (AppSettingsExpressionBuilder クラスなど) の基本クラスです。

式ビルダーは、宣言式を解析し、コードを作成して、コントロール プロパティにバインドされた値を取得します。コンパイルなしのシナリオでは、コンパイルなしの機能をサポートする式ビルダーが実行時に式を評価します。

詳細な説明と例については、msdn のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/system.web.compilation.expressionbuilder.aspx

于 2012-07-05T02:10:34.240 に答える
1

これは簡単です、あなたはこれを試しましたか:

<%= YourNamespace.YourConstant %>

または (.Net 4、このオプションはテキストを自動的にエンコードします)

<%: YourNamespace.YourConstant %>

いくつかの演算子があります:

  • <%#データバインディングに使用

  • <%$コードではなく式に使用されます。多くの場合、DataSources で見られます:

  • <%=文字列を返します

  • <%:と同じ<%=ですが、タグ内の値を自動 html エンコードします

編集 1

テストしたところ、サーバー コントロールでインライン コードを使用できないようです...

したがって、代替アプローチ:

  • コードビハインドを使用して値を割り当てるだけです

     this.myRegularExpressionValidator.ErrorMessage = ErrorMessages.Foo;
    
  • 代わりにリソースを使用してください。リソースを使用すると、サイトのローカリゼーションなどの多くの利点が得られます。リソースは単純な xml ファイルであるため、再コンパイルせずにサイトにドロップできます (サテライト アセンブリを使用してリソースを保存していないと仮定します)。

    <asp:RegularExpressionValidator runat="server" ErrorMessage="<%$ Resources:Resource, MyResource %>" />
    

    どこ

    • Resourceグローバルリソースファイルを指します
    • MyResourceテキストを含むリソース ファイル内のキーを参照します。

    グローバル リソースはApp_GlobalResources、リソース ファイル名の例として、ASP.Net 特別なフォルダーに配置する必要があります。Resource.resx

    リソースファイルの例

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <data name="MyResource" xml:space="preserve">
        <value>My error message</value>
      </data>
    </root>
    

    リソース ファイルは Visual Studio を使用して追加および管理できるため、XML を手動で処理する必要はありません。

于 2012-07-05T02:51:09.613 に答える