控制长度限制';ASP.Net中的s Id
asp.net web应用程序中控件id的字符限制是多少控制长度限制';ASP.Net中的s Id,asp.net,Asp.net,asp.net web应用程序中控件id的字符限制是多少 我有一个使用随机函数生成控件id的场景。这是数据类型字符串的控件属性。因此,您可以添加一个将采用的值到字符串变量中。这是数据类型字符串的控件属性。因此,您可以添加一个将采用的值到字符串变量中。在查看时偶然发现了这一点关于生成随机ID作为额外的SPAMBot挫败机制的信息/想法,我想我会回答 正如Darin指出的,虽然不是ASP.NET特有的,但以下先前发布的问题的答案表明,在所有现代浏览器中,100万个字符已成功用作HTML ID: 下
我有一个使用随机函数生成控件id的场景。这是数据类型字符串的控件属性。因此,您可以添加一个将采用的值到字符串变量中。这是数据类型字符串的控件属性。因此,您可以添加一个将采用的值到字符串变量中。在查看时偶然发现了这一点关于生成随机ID作为额外的SPAMBot挫败机制的信息/想法,我想我会回答 正如Darin指出的,虽然不是ASP.NET特有的,但以下先前发布的问题的答案表明,在所有现代浏览器中,100万个字符已成功用作HTML ID: 下面在4.0应用程序池中运行的quick DOTNET测试页面证实了ASP.NET可以很好地处理此问题,尽管如此,加载页面并发回可能需要一分钟的时间。请记住,“name”属性也具有“id”值,因此它实际上是双倍的 当ID接近1000万个字符时,我遇到了奇怪的浏览器行为,但是如果您正在考虑使用这么大的ID,您可能需要重新考虑一些事情;)
StringBuilder controlID=新的StringBuilder();
int controlIDLength=1000000;//一个美丽的角色!!!
无效页面_Init(对象发送方,事件参数e)
{
//创建一个非常长的控件ID
对于(int n=1;n
在寻找关于生成随机ID作为额外的垃圾邮件阻止机制的信息/想法时,我偶然发现了这一点,并认为我会回答
正如Darin指出的,虽然不是ASP.NET特有的,但以下先前发布的问题的答案表明,在所有现代浏览器中,100万个字符已成功用作HTML ID:
下面在4.0应用程序池中运行的quick DOTNET测试页面证实了ASP.NET可以很好地处理此问题,尽管如此,加载页面并发回可能需要一分钟的时间。请记住,“name”属性也具有“id”值,因此它实际上是双倍的
当ID接近1000万个字符时,我遇到了奇怪的浏览器行为,但是如果您正在考虑使用这么大的ID,您可能需要重新考虑一些事情;)
StringBuilder controlID=新的StringBuilder();
int controlIDLength=1000000;//一个美丽的角色!!!
无效页面_Init(对象发送方,事件参数e)
{
//创建一个非常长的控件ID
对于(int n=1;n
可能重复的字符没有实际的最大值,但有一个HTML规范规定允许使用哪些字符。所以要小心你的随机函数。更不用说随机性并不意味着唯一性,HTML规范规定ID必须是唯一的。我正在为其添加时间戳以实现唯一性。这可能有助于更多地了解您试图实现的目标。与每次调用随机函数相比,可能有更好的方法生成唯一ID,这只会降低多个ID的可能性。我正在创建一个屏幕,其中将显示好友列表,最终用户可以继续添加好友。我需要添加标签和文本框。正如@Curt所说,随机数,甚至时间戳,可能不是唯一的。我使用Guid.NewGuid().ToString().Replace('-','''.')
(附加到一些前缀)来表示(几乎可以保证!)唯一的控件ID。可能的重复没有实际的最大值,但有一个HTML规范规定了允许的字符。所以要小心你的随机函数。更不用说随机性并不意味着唯一性,HTML规范规定ID必须是唯一的。我正在为其添加时间戳以实现唯一性。这可能有助于更多地了解您试图实现的目标。与每次调用随机函数相比,可能有更好的方法生成唯一ID,这只会降低多个ID的可能性。我正在创建一个屏幕,其中将显示好友列表,最终用户可以继续添加好友。我需要添加标签和文本框。正如@Curt所说,随机数,甚至时间戳,可能不是唯一的。我使用Guid.NewGuid()。
<script language="c#" runat="server">
StringBuilder controlID = new StringBuilder();
int controlIDLength = 1000000; // ONE MEEEEEEELLLLLION CHARACTERS!!!
void Page_Init(object sender, EventArgs e)
{
// Create a really really long control ID
for(int n = 1; n < controlIDLength; n++)
{
controlID.Append("A");
}
var TestControl = new System.Web.UI.WebControls.TextBox();
TestControl.ID = controlID.ToString();
ControlPlaceholder.Controls.Add(TestControl);
}
void Page_Load(object sender, EventArgs e)
{
ControlIDLengthLiteral.Text = "ControlID Length: " + controlIDLength.ToString();
if (IsPostBack)
{
ControlValue.Text = "Value Received: " + ((TextBox)PageForm.FindControl(controlID.ToString())).Text;
}
}
</script>
<html>
<head>
<title>Maximum ID Length Test</title>
</head>
<body>
<p>
<asp:Literal ID="ControlIDLengthLiteral" runat="server" /><br />
<asp:Literal ID="ControlValue" runat="server" />
</p>
<form id="PageForm" runat="server">
<asp:PlaceHolder ID="ControlPlaceholder" runat="server" /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>