2012-01-24 16 views
2

asp.net Webアプリケーションのコントロールの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

追加のSPAMBotの妨害メカニズムとしてランダムIDを生成することについての情報や考えを探している間にこれに遭遇し、私が答えると思った。

ダーリンは、ASP.NETに固有のものではないが、以下の以前に掲載の質問が1万字が正常にすべての最新ブラウザでHTMLのIDとして使用されていると述べている答えを持っている、指摘したように:

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>