2012-01-24 6 views
2

asp.net 웹 응용 프로그램에서 컨트롤의 ID에 대한 글자 수 제한은 얼마입니까?ASP.Net의 컨트롤 ID의 길이 제한

나는 무작위 기능을 사용하여 컨트롤 ID를 생성 할 시나리오가 있습니다.

+2

가능한 중복을 [ HTML ID의 실질적인 최대 길이는 얼마입니까?] (http://stackoverflow.com/questions/584184/what-is-a-practical-maximum-length-for-html-id) 실제 최대 값은 없지만 허용되는 문자를 지정하는 HTML 사양. 따라서 임의 기능에주의하십시오. 랜덤은 고유함을 의미하지 않으며 HTML 사양은 다른 것들 중에서도 고유 한 ID를 지정합니다. –

+0

고유성을 위해 타임 스탬프를 추가하려고합니다. – Ravia

+0

달성하고자하는 것에 대해 더 많이 이해하는 데 도움이 될 수 있습니다. 매번 무작위 함수를 호출하는 것보다 고유 ID를 생성하는 더 좋은 방법이있을 수 있습니다. 이는 여러 ID의 기회 만 낮 춥니 다. – Curt

답변

1

데이터 유형 string의 제어 등록 정보입니다. 문자열 변수에 적용 할 값을 추가 할 수 있습니다.

3

추가 스팸봇 차단 메커니즘으로 임의의 ID를 생성하는 것에 대한 정보/생각을 찾다가이 문제에 답을 찾아 냈습니다.

:

대린으로

다음 이전에 게시 된 질문은 1 개 백만 문자가 성공적으로 모든 최신 브라우저에서 HTML ID로 사용되었다는 내용의 답을 가지고 ASP.NET에, 동안 특정하지 지적 What is a practical maximum length for HTML id?

4.0 응용 프로그램 풀에서 실행 된 아래의 빠른 DOTNET 테스트 페이지는 ASP.NET이 —이 잘을 처리하는 것을 확인하지만 그 크기로, 페이지를로드하고 분 정도 걸릴 수 있습니다 다시 게시. "name"속성도 "id"값을 취하므로 실제로 두 배가됩니다.

나는 10 만 개 문자를 접근 ID를 가진 이상한 브라우저 동작을 경험하지만, 경우에 당신은 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>