在我的表单中,我需要插入“text”类型的不同输入。输入必须是带有名称和ID的html控件。因为我将此表单发送到外部URL。
为了验证,我在所有输入中运行runat = server,然后我可以使用requiredfieldvalidator。
<input id="first_name" class="formright" type="text" name="first_name" runat="server" />
改变为
<input name="ctl00$cphContent$first_name" type="text" id="ctl00_cphContent_first_name" class="formright">
我必须使用html控件,因为外部postbackurl查看name和id值以查找控件。所以我不能使用asp控件。因为我使用了runat = server的html控件
我感谢任何帮助
解决方法
这是因为您正在使用MasterPages。
内容页面中包含的控件采用基于母版页层次结构的动态ID,以避免重复ID。
如果需要在客户端脚本中引用控件ID和名称,则可以使用<%= first_name.ClientID%>。
如果您使用的是.NET4,则可以使用ClientIDMode="Static"
使生成的ID保持一致,但这会带来自己的ID冲突警告,例如,在页面上使用同一用户控件的多个实例时。 Rick Strahl概述了那些here。
但是,如果您使用的是ASP.NET验证器,那么一切都应该没问题。您应该使用ASP.NET TextBox control而不是使用HTML输入:
<asp:TextBox id="first_name" runat="server" CssClass="formright" />