asp.net Web应用程序中控件ID的字符限制是什么?
我有一个场景,我将使用随机函数生成控件ID。
答案 0 :(得分:3)
在寻找关于生成随机ID的信息/想法时偶然发现了这一点,作为一个额外的SPAMBot挫败机制,我想我会回答。
正如Darin所指出的,虽然不是特定于ASP.NET,但以下发布的问题的答案表明在所有现代浏览器中已成功将1百万个字符用作HTML ID:
下面的快速DOTNET测试页面在4.0应用程序池中运行,确认ASP.NET处理这个问题很好 - 虽然在那个大小,加载页面并回发可能需要一分钟。请记住,“name”属性也采用“id”值,因此它实际上加倍了。
我遇到奇怪的浏览器行为,ID接近1000万个字符,但如果您正在考虑使用那么大的ID,您可能需要重新考虑一些事情;)
<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>
答案 1 :(得分:1)
它是数据类型string的控件属性。您可以添加一个将采用的字符串变量值。