產生的id和name可以通過幾個方法過載可以去除
1.使用html,這種方法很好,符合原來html的標籤,如htmllink,則不需要name屬性,表單提交需要name屬性
第一部重寫control類的clientid屬性.
此屬性是唯讀的
public
override
string
clientid
這樣的話,控制項返回的id就不會很複雜了.
2.表單
重寫htmlinputcontrol類的name屬性就可以通過了.
以上兩點都可以通過
system.web.ui.adapters.controladapter來實現
3.web伺服器控制項
其id和name輸出是在addattributestorender方法中,方法會在renderbegintag方法中呼叫.
假設我們要通過system.web.ui.webcontrols.adapters.webcontroladapter來實現的話,重寫renderbegintag方法的話,無法得到控制項的tagname,當然如果重新製作控制項就可以把tagname屬性暴露出來,這樣便可以了
會導致renderendtag無法輸出,難道重寫renderendtag?,然後乙個乙個控制項的型別判斷.或者就真這麼做,工作量會比較大些.無法取到tagname比較遺憾.
另外的方法就是重寫addattributestorender方法了.不過會犧牲一些功能.
還是推薦使用html控制項配合system.web.ui.adapters.controladapter的使用,就可以拋棄討厭的巢狀**了,大家可以配合mvc框架使用.
HTML伺服器控制項和WEB伺服器控制項的區別和聯絡
是html元素的一種演變,通過將html元素轉換為html伺服器控制項,也就是新增runat server 屬性,這樣就使得html元素元件可以在伺服器上以元件的方式出現了,並可以通過元件的方式對其程式設計去建立web頁面了 web 伺服器控制項同樣在伺服器建立,且需要 runat server 屬...
Web伺服器控制項和HTML伺服器控制項的總結
web 伺服器控制項比 html 伺服器控制項更豐富 更抽象。web 伺服器控制項在 asp.net 頁上有 asp 標記字首,例如 屬於 system.web.ui.webcontrols 命名空間的asp.net伺服器控制項。html 伺服器控制項 html server control 屬於 ...
HTMl伺服器控制項和WEB伺服器控制項 二
htmlcontrol 所有的html伺服器控制項都繼承自htmlcontrol類。該類分為三種型別 htmlinputcontrol 輸入控制項 htmlcontainercontrol 容器控制項 htmlimage 控制項 htmlcontrol繼承自system.web.ui.control...