如何检测web表单ASP.NET C#中的控件?
ASPX: 错误: 此行中有错误: if(c.ID.StartsWith(“eng”)//对象引用未设置为对象的实例如何检测web表单ASP.NET C#中的控件?,c#,asp.net,C#,Asp.net,ASPX: 错误: 此行中有错误: if(c.ID.StartsWith(“eng”)//对象引用未设置为对象的实例 这意味着form1找不到具有所述id的控件。请尝试更改为foreach(Page.Controls中的var c控件) P.S.Esko他对本地化的看法是正确的,你的做法是不正确的 下面是我所说的一个很好的例子:您必须使用一个技巧来实现这一点,因为代码显示异常,因为第一个控件呈现是没有id的literalControl,所以您必须使用以下代码传递它 protected void
这意味着form1找不到具有所述id的控件。请尝试更改为
foreach(Page.Controls中的var c控件)
P.S.Esko他对本地化的看法是正确的,你的做法是不正确的
下面是我所说的一个很好的例子:您必须使用一个技巧来实现这一点,因为代码显示异常,因为第一个控件呈现是没有id的
literalControl
,所以您必须使用以下代码传递它
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
ChangeLanguage();
}
private void ChangeLanguage()
{
foreach (var item in form1.Controls)
{
Control c = (Control)item;
c.Visible = false;
if (c.ID.StartsWith("eng")) //error : Object reference not set to an instance of an object.
{
c.Visible = true;
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
ChangeLanguage();
}
控件是动态创建的还是只需执行eng_lblContent.Visible=True?此外,你应该阅读有关本地化的信息,我在web表单中有很多控件,你只是想检测
标签控件???@Usman,我有很多不同的控件type@andrey.shedko是否应该是foreach(第页控件中的var c)
而不是foreach(第页控件中的var c控件)
?@ekad,是,也可能是这样,只需要调用页面对象而不是form1。你错了。Literal control System.Web.UI类控件,因此它也有ID。@SamieyMehdi是指您提供的HTML是否完整??如果是,则不会显示任何错误
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
ChangeLanguage();
}
private void ChangeLanguage()
{
foreach (var item in form1.Controls)
{
Control c = (Control)item;
c.Visible = false;
if (c.ID.StartsWith("eng")) //error : Object reference not set to an instance of an object.
{
c.Visible = true;
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
ChangeLanguage();
}
if (c is LiteralControl)
continue;
else
{
c.Visible = false;
if (c.ID.StartsWith("eng"))
{
c.Visible = true;
}
}