我编写了一个 ASP.NET 服务器控件。
视图状态完美运行,但是当我尝试使用其公共即时方法获取自定义控件上的控件值时,它给我带来了一个异常,即没有具有该 ID 的控件。
我编写了一个 ASP.NET 服务器控件。
视图状态完美运行,但是当我尝试使用其公共即时方法获取自定义控件上的控件值时,它给我带来了一个异常,即没有具有该 ID 的控件。
如果要从自定义控件中获取值,则必须在 OnInit 事件中注册控件。
//Register your controls
protected override void OnInit(EventArgs e) {
var controlName = (Type)LoadControl("~/path.ascx");
controlName.ID = "YOU_MUST_SET_AN_ID";
placeholder.Controls.Add(controlName);
}
//get your controls (add the following in any method you like)
var controlNameCtrl = (Type)placeholder.FindControl("CONTROLID");
var propertyValue = controlNameCtrl.PropertyName;
当您创建自定义控件时,页面将自定义控件标识为一个实体,并且您无法直接访问自定义控件中的各个控件。
要获取自定义控件的各个元素的属性值,您应该在自定义控件中定义属性,这反过来将各个控件包装在自定义控件中。
但是,您始终可以在用户控件本身中获取包含控件的值(不是在放置它的页面中,而是在控件代码本身中。)。您还可以在自定义控件中编写事件以使其交互。