.net - 设置 runat=server 时输入名称和 ID 会发生变化

标签 .net asp.net validation forms

在我的表单中,我需要插入“文本”类型的不同输入。输入必须是带有名称和 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/

相关文章:

java - 想要一个用于验证印度车辆号码格式的正则表达式吗?

c# - 逐帧录制视频时,如何处理C#.NET TimeSpan Progressive Rounding Error?

c# - 使用 github 操作进行部署时更改 appsettings 中的变量

c# - 如何使 TextBox 随着用户的输入不断更新?

asp.net - ASP .NET MVC 在工作期间进行身份验证和保持用户身份验证的最佳实践

c# - 在什么命名空间中找到 FileOutputStream

java - Spring MVC 无效日期格式错误消息未显示

.net - 是否有用于读取 RAW 文件的良好 .NET 库?

c# - System.Timer 在单独的线程中流逝并保持线程限制

c# - EFCore 2.0 默认所有日期字段使用 datetime2