簡體   English   中英

ASP.NET:是否可以在不使用.NET代碼(例如VB.NET或C#)的情況下創建動態命名的Javascript函數?

[英]ASP.NET: Is it possible to create dynamically-named Javascript functions without using .NET code (ie, VB.NET or C#)?

我有一個自定義用戶控件(ascx),其中包含一個文本框和一個基於Javascript的計數器,以使用戶知道他們剩下要鍵入的許多字符。 此控件中的內容如下:

function GetTextBox() {
    return document.getElementById("<%=txNotes.ClientID %>");
}

當我們在頁面上只有一個該用戶控件的實例時,這很好用,但是現在我們必須支持多個。 如您所知,在頁面上具有該控件的多個實例將導致多個GetTextBox()函數,無論如何都只會調用其中的最后一個。 為了支持多個實例,我使用以下方法:

if (!string.IsNullOrEmpty(TextBoxName) && !Page.ClientScript.IsClientScriptBlockRegistered(TextBoxName))
{
    string Script = string.Format("function Get{0}Notes() {{ return document.getElementById(\"{1}\"); }}", 
        TextBoxName, txNotes.ClientID);

    Page.ClientScript.RegisterClientScriptBlock(GetType(), TextBoxName, Script, true);
}

TextBoxName是一個公共的usercontrol屬性,因此,如果開發人員通過Employee,它將生成一個名為GetEmployeeNotes()的Javascript函數。 之所以如此有效,是因為現在我們可以擁有一個獨特的GetNotes()函數。

但是,我不喜歡將其硬編碼到背后的代碼中。 我想要一個基於標記的解決方案,在我想更改Javascript的情況下,不需要重新構建項目。 有人知道這樣做的方法嗎?

編輯 :我已經考慮過創建一個單獨的.js文件,可以使用文本閱讀器閱讀該文件,但這聽起來有些黑,我想盡可能避免這種情況。

編輯2 :下面衛隊的答案會起作用,但由於我在他的答案下面給出的原因,我不想走那條路線。 如果沒有人可以提供另一種方法來做我想做的事情,我很可能會將他標記為答案,因為從技術上講,它完全可以滿足我的要求。

我不是.NET專家,但是它不是作為預處理器工作的嗎?

寫作不合法嗎

function Get<%=Name %>Notes() {...}

為什么不使用通用函數,而只傳遞相應文本框的ID? 如:GetNotes(thisTextBoxId){...}。 這樣不僅可以解決您的問題,而且可以使DRY干燥

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM