Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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#_User Controls_Viewstate_Webforms - Fatal编程技术网

C# 动态用户控件保存视图状态

C# 动态用户控件保存视图状态,c#,user-controls,viewstate,webforms,C#,User Controls,Viewstate,Webforms,我使用DropDownList让用户选择表单模板。然后用户发回服务器,模板中的用户控件将动态呈现到页面。用户填写表单并单击“保存”后,用户控件的ViewState将丢失,并且值为空 页面控件 当用户从下拉列表中选择表单模板并触发回发时,该值需要保留在某个位置,因为在执行第二次回发时,您需要从第一次回发中再次加载usercontrol。这很直观。问题是如何存储用户控件中的值以获取回发上的值。 <air:CreateEditForm ID="CreateEditForm" runat="ser

我使用DropDownList让用户选择表单模板。然后用户发回服务器,模板中的用户控件将动态呈现到页面。用户填写表单并单击“保存”后,用户控件的ViewState将丢失,并且值为空

页面控件
当用户从下拉列表中选择表单模板并触发回发时,该值需要保留在某个位置,因为在执行第二次回发时,您需要从第一次回发中再次加载usercontrol。

这很直观。问题是如何存储用户控件中的值以获取回发上的值。
<air:CreateEditForm ID="CreateEditForm" runat="server" />

<asp:PlaceHolder ID="phDynamicControls" runat="server" />

<p>
    <asp:Button ID="btnCreate" runat="server" Text="Create" OnClick="btnCreate_Click" CssClass="action-button" />
    <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" CssClass="action-button" Visible="false" />
    <asp:HyperLink ID="linkCancel" runat="server" Text="Cancel" NavigateUrl="Index.aspx" CssClass="action-button" />
</p>
protected void btnCreate_Click(object sender, EventArgs e)
{
  CreateDynamicSteps();
}

private void CreateDynamicSteps()
{
  foreach (WorkflowTemplate workflowTemplate in template.WorkflowTemplates)
  {
    foreach (WorkflowTemplateStep workflowStep in workflowTemplate.WorkflowTemplateSteps)
    {
        if (workflowStep.SubSteps.Count > 0)
        {
            foreach (WorkflowTemplateStep workflowSubStep in workflowStep.SubSteps)
            {
                if (workflowSubStep.WhoIsDynamic)
                {
                    dynamicSteps.Add(workflowSubStep);
                }
            }
        }
        else if (workflowStep.WhoIsDynamic)
        {
            dynamicSteps.Add(workflowStep);
        }
    }
  }

  // removed for brevity

  foreach (WorkflowTemplateStep dynamicStep in dynamicSteps)
  {
    PersonSelectorDialog personSelector = (PersonSelectorDialog)LoadControl("~/Pages/UserControls/PersonSelectorDialog.ascx");
    personSelector.ClientIDMode = System.Web.UI.ClientIDMode.Static;
    personSelector.LabelID = "lbl" + dynamicStep.ID;
    personSelector.Label = dynamicStep.Name + " Selector";
    DynamicPersonSelectorDialogs.Add(personSelector);
  }

  // removed for brevity
}

private void LoadControls()
{
  foreach (PersonSelectorDialog personSelector in DynamicPersonSelectorDialogs)
  {
    Label title = new Label();
    title.ID = personSelector.LabelID;
    title.ClientIDMode = System.Web.UI.ClientIDMode.Static;
    title.Text = personSelector.Label;
    phDynamicControls.Controls.Add(title);

    phDynamicControls.Controls.Add(personSelector);
  }
}