有没有办法控制.Net如何设置控件的Name
和ID
属性?我有一些单选按钮,我需要名称相同。但是,如果我设置了单选按钮控件的ID
属性,则会设置Name
和ID
。我认为无法单独处理ID
和Name
。所以现在所有按钮的ID都是一样的。
如果您认为我应该使用RadioButtonList
来实现这一点,那么您可能是对的,但我还没有找到在动态创建的RadioButtonList
中包含表结构的方法。
由于
答案 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。但是,这是否是一个选项取决于您的情况。
在另一种情况下,无法自己真正控制这些控件的Name
和ID
属性。也就是说,直到ASP.NET 4.0(外观here获取更多信息)才被发布。
答案 3 :(得分:0)
我过去通过创建一个继承自RadioButton的新控件解决了这个问题,但添加了一个新的GroupName属性,用于呈现控件的名称。不幸的是,我没有方便的代码,但是一个快速的谷歌想出了一些similar on codeproject。