2010-01-19 34 views
0

假設您的Web表單中有一個Button,並且OnClick綁定了一個代碼隱藏事件。將控件移到主分頁符事件綁定中嗎?

然後,通過將該按鈕添加到母版頁的控件的控件集合中,將該按鈕向上移動到母版頁中。 這是在運行時在Page_Load事件中完成的。

OnClick事件現在綁定到哪裏?仍然是Web表單的代碼隱藏,還是查看母版頁的代碼隱藏?

我這樣做了,現在我的按鈕什麼也沒做。它將頁面發回,但實際上並沒有在代碼隱藏中運行綁定事件。

我在兩種情況下都檢查了按鈕的HTML。那唯一改變的是標識和名稱,以反映命名容器的變化:

在Web表單(「搜索Maincontent」是的ContentPlaceHolder):

<input type="submit" id="ctl00_MainContent_DeleteButton" value="Yes, Delete" name="ctl00$MainContent$DeleteButton"/>  

在母版頁:

<input type="submit" id="ctl00_DeleteButton" value="Yes, Delete" name="ctl00$DeleteButton"/> 

我已經運行調試器,並且可以確認它不再接觸綁定事件。

它是將其綁定到事件的ID還是名稱?如果是這樣,我將它移動到母版頁中是否會打破此綁定?

+0

你是說呈現的HTML缺少JavaScript?是不是應該在那裏調用__doPostBack(eventTarget,eventArgument)? – Josh 2010-01-19 19:02:47

+0

那就是那裏呈現的HTML,所以如果它不在那裏,它就不會呈現。這就是讓我認爲事件處理程序在控件移動時斷開連接的原因。 – Deane 2010-01-22 22:15:50

回答

0

將控件綁定到代碼隱藏事件是一個屬性(例如:<asp:Button ... OnClick="btnSubmit_click">),並且此屬性在上述示例中似乎不存在。

雙擊母版頁上的按鈕,它應該連接事件。如果你有嚴重的事件處理,你會發現許多有趣的東西太:)

+0

你誤解了。上面的HTML是頁面上的*渲染* HTML。而且我無法點擊母版頁中的按鈕,因爲它被移動到* Page_Load事件中的母版頁。它從Web表單開始,綁定很好。 – Deane 2010-01-19 17:01:33

+0

哦。在生成主控制器上的按鈕的過程中,是否有機會通過代碼隱藏連接類似的事件? IE:Button.onclick = originalButtonmethod_click() – 2010-01-25 15:21:37

0

如果控制是在母版頁,發動機將尋找背後的母版頁的代碼的事件處理程序。事件處理程序需要或者是

a。在與它們定義相同的範圍內聲明,或

b。以編程方式分配。

+0

Web窗體中的控件*啓動*。它在Page_Load期間被移到主頁面。那麼,它的範圍是什麼? – Deane 2010-01-19 17:02:17

+0

您不清楚按鈕何時以及如何移動。你還沒有提到如何分配事件處理程序。 – 2010-01-19 22:33:54

+0

對不起 - 我編輯了我的帖子,以表明它在運行時被移動。事件處理程序通過Web表單中控件元素中的OnClick屬性進行分配。 – Deane 2010-01-22 22:15:07

0

由於移動,您可能會在控制執行生命週期中斷開連接。

你說,你的Page_Load,這恰好回傳數據處理後,在移動控制,但在此之前回發更改通知和處理程序被解僱。

Control Execution Lifecycle Reference

而且this說,這是在回發處理事項UniqueID,但我不知道有關事件。