0

私は明確であることを願っています!

最初は Dynamic Data を使用しています。以下のコードは、電話番号用にパーソナライズされた TextBox です。

ブラジルの電話番号のマスクを作成するコードを以下に示します。ページを生成する動的データも使用しています。

<script type="text/javascript">
function mascaraTel(o, f) {
    v_obj = o
    v_fun = f
    setTimeout("execmascaraTel()", 1)
}
function execmascaraTel() {
    v_obj.value = v_fun(v_obj.value)
}
function mtel(v) {
    v = v.replace(/\D/g, "");             
    v = v.replace(/^(\d{2})(\d)/g, "($1) $2"); 
    v = v.replace(/(\d)(\d{4})$/, "$1-$2");  

    return v;
}
</script>
<asp:TextBox ID="TextBox1" runat="server" CssClass="slm_TextBox" Width="140px" />

そして、コードビハインドに以下のコードがあります

TextBox1.Attributes["onKeyDown"] = @"return mascaraTel(this, mtel);";

私はこれを聞くのが嫌いですが、このコードは、[新規] (ビジネス ロジックのいずれかのオブジェクトを作成する) をクリックしたときにのみページで機能し、一方、[編集] (ビジネス ロジックのいずれかのオブジェクトを編集) をクリックすると、上記のコードがロードされないため、ブラウザで「mascaraTel」は未定義と表示されます。

[編集] をクリックするとコードが読み込まれず、[新規] をクリックすると正常に動作する理由を教えてもらえますか?

前もって感謝します!

4

1 に答える 1

0

まず、動的データ Web アプリケーション (または Web サイト)Text_Edit.ascxのフォルダーにある既定のフィールド テンプレートを変更したことを理解しています。DynamicData\FieldTemplates

動的データは、モデル内の一致するすべての列に同じフィールド テンプレートを使用します。Text_Editフィールド テンプレートは、モデル内の型(動的データは.NET 型のエイリアスを使用)のすべての列 (ビジネス ロジックの任意のオブジェクト) に自動的に使用されます。フィールド テンプレートの定義を変更すると、それが使用されているすべての Web ページに影響しますstring TextString

したがって、ブラジルで電話番号のマスクをテキスト フィールド内に実装するには、カスタム フィールド テンプレートを作成する必要があります (コピーText_Edit.ascxして に貼り付けるだけです。DynamicData\FieldTemplatesデフォルトからカスタム コードを削除することを忘れないでくださいText_Edit.ascx)。次に、新しいフィールド テンプレートの名前BrazilPhone_Edit.aspxを に変更し、必要な変更を行います。

次に、メタデータを編集します。

[UIHint("BrazilPhone")]
public object Phone_Number { get; set; }

詳細については、記事「方法: ASP.NET 動的データの既定のフィールド テンプレートをカスタマイズする」を参照してください。

于 2013-05-22T08:52:47.157 に答える