在我的表单中,我需要插入“文本”类型的不同输入。输入必须是带有名称和 ID 的 html 控件。因为我将此表格发送到外部网址。
对于验证,我在所有输入中执行 runat=server,然后我可以使用 requiredfieldvalidator。
但问题是当我在访问页面后查看源代码时,名称和 ID 都已更改。
例如
<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 验证器,那么一切都应该没问题。而不是使用 HTML input
你应该使用 ASP.NET TextBox control :
<asp:TextBox id="first_name" runat="server" CssClass="formright" />
关于.net - 设置 runat=server 时输入名称和 ID 会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5792290/