c#控制名称

时间:2009-10-27 18:51:36

标签: c# asp.net

有没有办法控制.Net如何设置控件的NameID属性?我有一些单选按钮,我需要名称相同。但是,如果我设置了单选按钮控件的ID属性,则会设置NameID。我认为无法单独处理IDName。所以现在所有按钮的ID都是一样的。

如果您认为我应该使用RadioButtonList来实现这一点,那么您可能是对的,但我还没有找到在动态创建的RadioButtonList中包含表结构的方法。

由于

4 个答案:

答案 0 :(得分:2)

从一个文本框声明一个后代类,它会覆盖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"/>

答案 1 :(得分:1)

在.net中不起作用。它们需要具有唯一名称,因为它们将单选按钮与视图状态相关联。我会问为什么你需要它们是同一个名字?如果是因为您希望用户只能从x中选择1个项目,那么您希望使用GroupName属性。

答案 2 :(得分:0)

如果省略控件定义中的runat="server"属性,则可以自由设置名称和ID。但是,这是否是一个选项取决于您的情况。

在另一种情况下,无法自己真正控制这些控件的NameID属性。也就是说,直到ASP.NET 4.0(外观here获取更多信息)才被发布。

答案 3 :(得分:0)

我过去通过创建一个继承自RadioButton的新控件解决了这个问题,但添加了一个新的GroupName属性,用于呈现控件的名称。不幸的是,我没有方便的代码,但是一个快速的谷歌想出了一些similar on codeproject