2013-05-16 31 views
0

我希望能夠清楚!Javascript代碼未加載工作

起初,我使用的是動態數據,下面的代碼是用於電話號碼個性化的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);"; 

我討厭聽到這個下面的代碼,但是當我點擊新建(創建一個對象,我的任何業務邏輯)這個代碼只能在網頁上,另一方面,當我點擊編輯(編輯一個對象任何我的業務邏輯),上面提到的代碼不會加載,導致我瀏覽器說:'睫毛膏'是未定義的。

有人可以告訴我爲什麼代碼沒有加載,當我點擊編輯,並正常工作,當我點擊新?

在此先感謝!

+0

創建新的對象是什麼?你的問題需要更多的細節? – Adam

+0

創建我的業務邏輯的任何對象 – Guialro

回答

0

首先,據我所知,您已更改位於動態數據Web應用程序(或網站)的DynamicData\FieldTemplates文件夾中的默認Text_Edit.ascx字段模板。

動態數據在模型中爲所有匹配列使用相同的字段模板。該Text_Edit字段模板將自動用於所有列(爲您的業務邏輯的任何對象)string型(動態數據使用別名Text爲.NET類型String)的模型。通過更改字段模板的定義,您會影響所有使用它的網頁

因此,爲了實現對電話號碼面具在巴西的文本字段中,您需要創建自定義字段模板(只是複製Text_Edit.ascx並粘貼到DynamicData\FieldTemplates,不要忘了刪除默認Text_Edit.ascx自定義代碼)。然後將新字段模板重命名爲BrazilPhone_Edit.aspx,然後進行所需的更改。

然後編輯元數據:

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

對於閱讀文章How to: Customize ASP.NET Dynamic Data Default Field Templates更多信息。