我猜這可能與this有關,但不幸的是,在這種情況下解決方法似乎不起作用。自定義控件中的LinkButton不呈現標識(或者真的可以工作)
經過較大的實現不起作用掙扎後,我把它歸結爲最簡單的情況。這不起作用。
public class MyButton : Control
{
public MyButton()
: base()
{
LinkButton but = new LinkButton();
but.CommandName = "test";
but.CommandArgument = "test2";
but.Text = "Click Here";
Controls.Add(but);
}
}
什麼渲染是:
<a href="javascript:__doPostBack('ctl00$ctl11$ctl07','')">Click Here</a>
這裏有兩個主要問題。首先,沒有身份證。它應該有標籤id='ctl00$ctl11$ctl07'
。所以即使它會發布,事件也不會被捕獲。
其次,它忽略了CommandName和CommandArgument,無論如何它應該呈現__doPostBackWithOptions
。
我是非常愚蠢的,只是忽略了一些明顯的東西,或者這是ASP.NET中的一個巨大的錯誤?
我已經在Control
或WebControl
內部提供了很多其他控件,並且從來沒有遇到過任何問題,所以它肯定與簡單性有關,而不是複雜性。
如果有人能幫助我解決這個問題,將不勝感激。
沒有區別。也不應該。 INamingContainer只需要確保容器中用戶分配的ID的唯一性。這不是一箇中繼器,也不會分配任何自己的ID。 – 2011-02-03 18:45:15
讓我改述一下:它確實有所作爲,ID是在我用於控件的ID的上下文中,而不是頁面的上下文中。但它仍然不起作用,它不會呈現它自己的ID,也不會呈現正確的回發javascript。我確實嘗試過(其中大約一百萬件):) – 2011-02-03 18:53:47