0

我希望清楚!

首先,我使用的是动态数据,下面的代码是个性化的用于电话号码的文本框。

我在下面有这段代码,它为巴西的电话号码制作了一个掩码。我也在使用生成页面的动态数据。

<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

首先,据我了解,您已更改Text_Edit.ascx位于DynamicData\FieldTemplates动态数据 Web 应用程序(或网站)文件夹中的默认字段模板。

动态数据对模型中的所有匹配列使用相同的字段模板。Text_Edit字段模板会自动用于模型中类型(动态数据使用.NET 类型的别名)的所有列(业务逻辑的任何对象)。通过更改字段模板的定义,您会影响使用它的所有网页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 回答