好的:我在包含一個佔位符的aspx頁面上有一個UpdatePanel。UpdatePanel中的JavaScript代碼
這裏面佔位符,我追加選擇取決於某些外部條件的usercontrols的(這是一個配置頁)之一。
在每個這些用戶控件的存在bindUcEvents()的javascript結合的各種jQuery和JavaScript事件到該用戶控件內的按鈕和驗證功能。
我遇到的問題是usercontrol的javascript未被識別。通常,updatepanel中的javascript在updatepanel回發時執行,但是這些代碼都不能被頁面找到(我試過通過螢幕控制檯手動運行這個函數,但它告訴我它找不到函數)。
有沒有人有任何建議?
Cheers,Ed。
編輯:
減少(但功能)例如:
標記:
<script src="/js/jquery-1.3.2.min.js"></script>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="Script" runat="server" />
<asp:Button ID="Postback" runat="server" Text="Populate" OnClick="PopulatePlaceholder" />
<asp:UpdatePanel ID="UpdateMe" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Postback" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Literal ID="Code" runat="server" />
<asp:PlaceHolder ID="PlaceMe" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
C#:
protected void PopulatePlaceholder(object sender, EventArgs e)
{
Button button = new Button();
button.ID = "Push";
button.Text = "push";
button.OnClientClick = "javascript:return false;";
Code.Text = "<script type=\"text/javascript\"> function bindEvents() { $('#" + button.ClientID + "').click(function() { alert('hello'); }); } bindEvents(); </script>";
PlaceMe.Controls.Add(button);
}
你會看到按鈕不會poput警報消息,即使代碼存在於頁面上。
EDIT2:
好,這只是爲了清楚,生產代碼爲顯著比結合到一個文字只是一個單一的功能更復雜的,並且包含大量的
<%= Control.ClientID %>
比特代碼非常難以分解成非特定的函數,因爲它們都只在一個地方使用(我們正在談論非常具體的驗證以及奇怪的彈出式觸發器+某些邏輯),因此它們毫無意義。
你可以發佈一些源代碼或生成的代碼嗎?沒有它,這很難診斷。 – scunliffe 2010-05-19 10:03:05
當然,我只是傾向於避免這樣做,因爲它有很多,我會盡量減少一點 – 2010-05-19 10:38:05
你說過你有很多代碼,所以它不在代碼隱藏中。那麼它在哪裏?在aspx中?在外部的js文件?從數據庫/ xml文件加載並通過後面的代碼讀取? ascx文件中的 – Stobor 2010-05-31 02:53:58