經測試System.Web.UI.HtmlControls下的HtmlForm類,也就是我們在傳統的asp.net中使用的Form表單對象,不適合動態生成Html代碼。
於是自定義了一個簡單的HtmlForm容器控件,只需要幾行代碼。看來Asp.net在封裝Html元素方面還是很有優勢的,微軟為我們定義了
大量的基礎結構,很容易擴展使用。
public class myHtmlForm:HtmlContainerControl { public myHtmlForm() : base(form) { this.Attributes.Add(method, post); } public string Action { set { Attributes.Add(action, value); } } }
使用很簡單,直接new,然後向Controls集合中添加控件即可。
myHtmlForm form = new myHtmlForm(); form.ID = myform; form.Action = test.aspx; HtmlInputHidden hidf= new HtmlInputHidden(); hidf.ID = hidf.Name = hidden; form.Controls.Add(hidf);
最後在View中,輸出HTML代碼到響應流。
form.RendControl(Writer);
結論:
動態生成HTML表單就是這麼簡單明了。我以前可是自己拼接過HTML,然後Write啊。善於利用框架提供的類可以有效的提高開放效率,
並且使代碼的可讀性良好。尤其是在做表格控件時,善用System.Web.UI.WebControls.Table控件,會很有幫助。很想知道PHP或其他
語言是否也有這些好用的基礎設施呢?