Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在.net c#中循环嵌套控件?_C#_.net_Controls_Loops_Sitefinity - Fatal编程技术网

如何在.net c#中循环嵌套控件?

如何在.net c#中循环嵌套控件?,c#,.net,controls,loops,sitefinity,C#,.net,Controls,Loops,Sitefinity,我有8个或更多的图像控制每个内部超链接和占位符,我需要改变每个参数。这是用于Sitefinity gallery控件的。现在我做这个8次: if (String.IsNullOrEmpty(Image_1_File_Name) == true) { Image1_ph.Visible = false; } else { productImageLink1.NavigateUrl = Folder_URL + Image_1_File_Name + "_l.jpg"; p

我有8个或更多的图像控制每个内部超链接和占位符,我需要改变每个参数。这是用于Sitefinity gallery控件的。现在我做这个8次:

if (String.IsNullOrEmpty(Image_1_File_Name) == true) {
   Image1_ph.Visible = false;
  }
  else {  
  productImageLink1.NavigateUrl = Folder_URL + Image_1_File_Name + "_l.jpg";
  productImageLink1.Attributes.Add("rel", "zoom-id:"+ zoom.ClientID +";zoom-fade: true");
  productImageLink1.Attributes.Add("rev", Folder_URL + Image_1_File_Name + "_m.jpg");
  productImage1.ImageUrl = Folder_URL + Image_1_File_Name + "_tn.jpg";
  productImage1.AlternateText = Image_1_Alt_Tag;
  }
我只是复制粘贴它并替换号码。但是我想在循环中这样做,我就是找不到一种方法来引用每一组控件


如何实现这一点?

您可以使用递归在面板中的各种控件之间循环。”这就是一个例子

您可以使用递归来循环面板中的各种控件。”这就是一个例子

以下是一种可能适合您的方法:

  • 创建从超链接继承的类(另一个用于占位符)
  • 向类中添加一个属性,该属性将允许您设置图像url的编号
  • 然后在派生控件的Initialize函数中,可以根据在步骤2中创建的属性修复NavigateUrl(和其他属性)
  • 在设计器中的表单(而不是超链接和占位符控件)中使用新类,从步骤2开始设置属性
  • 这将消除对循环的需要


    谷歌搜索可能会为您提供关于如何创建继承的服务器控件的各种帮助/教程。

    以下是一种可能适合您的方法:

  • 创建从超链接继承的类(另一个用于占位符)
  • 向类中添加一个属性,该属性将允许您设置图像url的编号
  • 然后在派生控件的Initialize函数中,可以根据在步骤2中创建的属性修复NavigateUrl(和其他属性)
  • 在设计器中的表单(而不是超链接和占位符控件)中使用新类,从步骤2开始设置属性
  • 这将消除对循环的需要


    谷歌搜索可能会为您提供有关如何创建继承的服务器控件的各种帮助/教程。

    请注意,该示例在禁用时检查的是特定控件类型,而不是所有控件。通常,您只需使用类似于控件[i]的内容即可。Enabled=false;这也是我对.Net框架最大的抱怨之一。当我调用.FindControl(“mytextbox”)时。为什么我必须通过控制树手动递归?我对if(mytextbox.HasControls()){recurision}endif…感到非常厌倦。请注意,该示例在禁用时检查特定控件类型,而不是所有控件。通常,您只需使用类似于控件[i]的内容即可。Enabled=false;这也是我对.Net框架最大的抱怨之一。当我调用.FindControl(“mytextbox”)时。为什么我必须通过控制树手动递归?我对if(mytextbox.HasControls()){Recurrision}endif…感到非常厌倦。。。。