Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
C# 对于每个循环,返回空白_C#_Asp.net_Webforms_Aspwizard - Fatal编程技术网

C# 对于每个循环,返回空白

C# 对于每个循环,返回空白,c#,asp.net,webforms,aspwizard,C#,Asp.net,Webforms,Aspwizard,在我的asp:Wizard的最后一步中,我有一个for-each循环,它应该列出每个文本框中不为null的所有文本。文本框位于asp:Wizard的第二个步骤中,它们放置在asp:Panel控件中,在同一步骤中使用复选框可使控件可见或不可见。以下是循环的事件: protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e) { var requested = this

在我的
asp:Wizard
的最后一步中,我有一个for-each循环,它应该列出每个文本框中不为null的所有文本。文本框位于
asp:Wizard
的第二个步骤中,它们放置在
asp:Panel
控件中,在同一步骤中使用复选框可使控件可见或不可见。以下是循环的事件:

protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
    {
        var requested = this.Controls.OfType<TextBox>()
                         .Where(txt => !string.IsNullOrWhiteSpace(txt.Text));

        var sb = new StringBuilder();
        foreach (var textBox in requested)
        {
            sb.Append(textBox.Text); //Add the text not the textbox
            sb.Append("</br>"); //Add a line break to make it look pretty
        }
        Label1.Text = sb.ToString();

    }
protectedvoid向导1\u finishbutton单击(对象发送方,向导导航目标)
{
请求的var=this.Controls.OfType()
.Where(txt=>!string.IsNullOrWhiteSpace(txt.Text));
var sb=新的StringBuilder();
foreach(请求中的var文本框)
{
sb.Append(textBox.Text);//添加文本而不是文本框
sb.Append(“
”;//添加换行符使其看起来漂亮 } Label1.Text=sb.ToString(); }
如果我使用循环运行应用程序,无论我填写什么,我的标签都将返回空白。标签当前处于第3步

<asp:WizardStep ID="WizardStep3" runat="server" AllowReturn="false" Title="Step 3" StepType="Complete">
        <asp:Label ID="Label1" runat="server" Text="This text will display when I run the application without the foreach loop"></asp:Label>
</asp:WizardStep>

它们被放置在asp:Panel中

使用
this.Controls
可以查找直接存在于表单上而不在面板内的文本框

您应该修改查询以从面板获取控件,如:

var requested = yourPanel.Controls.OfType<TextBox>()
                         .Where(txt => !string.IsNullOrWhiteSpace(txt.Text));
var requested=yourPanel.Controls.OfType()
.Where(txt=>!string.IsNullOrWhiteSpace(txt.Text));
其中
yourplane
是您的
asp:Panel

它们被放置在asp:Panel中

使用
this.Controls
可以查找直接存在于表单上而不在面板内的文本框

您应该修改查询以从面板获取控件,如:

var requested = yourPanel.Controls.OfType<TextBox>()
                         .Where(txt => !string.IsNullOrWhiteSpace(txt.Text));
var requested=yourPanel.Controls.OfType()
.Where(txt=>!string.IsNullOrWhiteSpace(txt.Text));

其中
yourPanel
asp:Panel

的id。如果控件嵌套在其他控件中,则希望递归查找该控件。这里是helper方法

public static Control FindControlRecursive(Control root, string id)
{
   if (root.ID == id) 
      return root;

   return root.Controls.Cast<Control>()
      .Select(c => FindControlRecursive(c, id))
      .FirstOrDefault(c => c != null);
}

如果控件嵌套在其他控件中,则希望递归查找该控件。这里是helper方法

public static Control FindControlRecursive(Control root, string id)
{
   if (root.ID == id) 
      return root;

   return root.Controls.Cast<Control>()
      .Select(c => FindControlRecursive(c, id))
      .FirstOrDefault(c => c != null);
}
文本框是页面的直接子控件还是在面板中?如果是,您是否尝试过
var request=somePanel.Controls.OfType.…
文本框是页面或面板的直接子控件?如果是,您是否尝试过
var requested=somePanel.Controls.OfType…..