我有一些JavaScript在ASP.NET頁面看起來像這樣:AJAX和ASP.net,引用服務器控件的外部文件
var list = $get('<%=Topics.ClientID %>');
我現在已經寫了許多功能,其中該語法使用,我想集中我的JavaScript並將其移入外部JavaScript文件。但是,由於無法找到「主題」,因此這會打破。
使這項工作最好的策略是什麼?我假設我應該將控制/控制信息作爲參數傳遞給函數,但似乎無法使語法起作用。有什麼建議麼?
我有一些JavaScript在ASP.NET頁面看起來像這樣:AJAX和ASP.net,引用服務器控件的外部文件
var list = $get('<%=Topics.ClientID %>');
我現在已經寫了許多功能,其中該語法使用,我想集中我的JavaScript並將其移入外部JavaScript文件。但是,由於無法找到「主題」,因此這會打破。
使這項工作最好的策略是什麼?我假設我應該將控制/控制信息作爲參數傳遞給函數,但似乎無法使語法起作用。有什麼建議麼?
這是ASP.NET JS開發的常見問題。至於我,我每次都用同樣的方法,看起來很好。
我使用Javascript功能來OOP,所以我大部分的JS外部文件看起來像:
function CouponManager()
{
}
而且在代碼的.aspx我做:
<script language="javascript">
var couponManager = new CouponManager();
</script>
如果我需要通過一些參數更改類的聲明:
function CouponManager(params)
{
// .. stuff here
this.initialize = function(initParams)
{
// .. accessing initParams variable for server control IDs
};
this.initialize(params);
}
而且從代碼的.aspx我做了以下內容:
<script language="javascript">
var couponManager = new CouponManager
({
txtCouponNameId = '<%= txtCouponName.ClientID %>',
txtCouponDescriptionId = '<%= txtCouponDescription.ClientID %>'
});
</script>
此方法允許我將.as從.aspx頁面中分離出來,並將所有服務器控件依賴項都放在一個標記中。
您應該從usercontol內部創建一個javascript方法,該方法返回客戶端元素。然後在其他網頁/控制,只需訪問該方法
在用戶控制
<script language="javascript">
function GetTopics() {
return = $get('<%=Topics.ClientID %>');
}
</script>
在其他頁/控制
<script language="javascript">
var list = GetTopics();
</script>
編輯 - 您所面臨的問題是你需要的主題。 ClientID不存在的地方。所以彌合這個差距的唯一真正的方法是把它放在一個共同的地方。如果你真的不想這樣做,你可以嘗試通過其他標準來選擇你的元素。如果你使用jQuery,你可以用一類主題標記一個元素,然後用$(「。Topics」)找到它。
如果您知道每個頁面只有一個名爲「Topics」的服務器控件,並且您使用命名約定,那麼您可以從控件Topics(可能是HiddenField?您沒有指定)繼承它並覆蓋它客戶端Id吸氣返回其服務器ID是這樣的:
http://andreascode.wordpress.com/2009/04/27/tiny-drips-of-aspnet-juice/
,那麼你可以在你的JavaScript文件知道,會在頁面的隱藏字段與ID爲「主題」和使用直接。
根據您的域名/情況,這可能爲您節省大量時間,或者讓您在大時間內陷入困境。
對不起,我不是更具體。我正在尋找將JavaScript集中到外部JavaScript文件而不是用戶控件。我已經更新了這個問題。 – dtrickett 2009-05-26 15:02:04