首先这两个都是对应文本输入框形式:
<input type="text"class="form-control"id="txt_add_pro_help_username"value="aaa"/>
<asp:TextBox runat="server"CssClass="form-control"ID="txt_add_pro_help_username"/>
1)这两个在形式上是一模一样的,原因在于使用相同的class样式修饰。
2)使用上也是一样的,虽然<asp:TextBox>是服务器控件,但是ID也是可以作为控件id在js上使用的。
$("#txt_add_pro_help_username").val(result[2]);
$("#txt_add_pro_help_userdept").val(result[3]);
这两个一个是对应<input>形式的id,一个是对应<asp:TextBox>形式的id,结果都是一样的。
类型“TextBox”的控件“txtName”必须放在具有 runat=server 的窗体标记内。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
检查一下<form>是否正确,服务器端控件必须放在<form>内</form>
<form id="form1" runat="Server"> <asp:TextBox id="txtName" runat="server"> ..... .....</form>既然说毫无意义,删除和不删除效果确不一样啊!
runat="server"如LS那位仁兄说的那样,既然有了runat="server"别再加action了,两个的提交方式都不一样,action将form数据给了test.aspx页面,而runat="server"直接回交服务器, 处理数据,又以数据加密后的hidden属性的input控件插入回去,实现表单的状态保存~如果test.aspx是另一个页面当然就有了你说的那种现象了
aspx运行时会被编译,其中没有runat server属性的html标签会被直接写入response,有runat server属性的html标签会转换成对应的HtmlControl子类加入到页面的控件集合中,按照一个控件的生命周期进行处理,这就是”运行在服务器上”的意思.一个最直接的表现就是,当你写一个id=”abc”的div,如果有runat server属性,在你的aspx.cs文件中直接可以使用abc.XXX来操作这个对象,而没有runat server的话,在cs中是没有这个对象的.
以上说的是asp中的html控件,asp控件只能runat server,因为他们不是直接和html对应的