簡體   English   中英

C#控件名稱

[英]c# control names

有沒有一種方法可以控制.Net如何設置控件的NameID屬性? 我有一些單選按鈕,它們的名稱必須相同。 但是,如果我設置了單選按鈕控件的ID屬性,它將設置NameID 我看不到分別處理IDName 因此,現在所有按鈕的ID都相同。

如果您認為我應該使用RadioButtonList來實現此目的,那么您可能是對的,但是我還沒有找到在動態創建的RadioButtonList包括表結構的方法。

謝謝

是。

從一個文本框聲明一個后代類,該類將覆蓋UniqueID和ClientID屬性。 然后,使用MyControls.Textbox(在此示例中)而不是內置文本框。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


    namespace MyControls
    {
        public class Textbox : System.Web.UI.WebControls.TextBox
        {
            public override string ClientID
            {
                get
                {
                    return ID;
                }

            }

            public override string UniqueID
            {
                get
                {
                    return ID;
                }
            }

        }

        public class Button : System.Web.UI.WebControls.Button
        {

            public override string ClientID
            {
                get
                {
                    return ID;
                }

            }

            public override string UniqueID
            {
                get
                {
                    return ID;
                }
            }
        }
    }

請注意,您需要在web.config中注冊控件:

<pages>
  <controls>
    <add tagPrefix="mycontrols" namespace="MyControls" assembly="MyAssembly" />
  </controls>
</pages>

然后,您可以在標記中引用它們:

<mycontrols:TextBox id="myID" runat="server"/>

在.net中不能完全正常工作。 它們需要唯一地命名,因為這是它們將單選按鈕重新關聯到viewstate的方式。 我想問一下,為什么需要它們同名? 如果是因為您希望用戶只能從x中選擇一項,那么您想使用GroupName屬性。

如果從控件的定義中省略了runat="server"屬性,則可以自由設置其名稱和ID。 但是,是否可以選擇取決於您的情況。

在另一種情況下,您無法自己真正控制那些控件的NameID屬性。 就是說,直到發布ASP.NET 4.0( 在此處查看更多信息)。

過去,我通過創建一個繼承自RadioButton的新控件解決了此問題,但該控件添加了一個新的GroupName屬性,該屬性用於呈現控件的名稱。 不幸的是我沒有方便的代碼,但是一個快速的Google 在codeproject上提出類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM