The only way for an ASP.NET page to realize that you are using a server control (like asp:Textbox or input type=”text”) is to have runat=”server” in the control tag. This is very important; forgetting it will cause the ASP.NET engine to pass over the control as HTML.

By Bryan Xu