Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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
Asp.net 将多个用户控件嵌入到页面中?_Asp.net - Fatal编程技术网

Asp.net 将多个用户控件嵌入到页面中?

Asp.net 将多个用户控件嵌入到页面中?,asp.net,Asp.net,我在同一页中嵌入了多个用户控件。用户控件通常有两个不同的视图,一个是“编辑/默认”视图,另一个是“完成”视图。当用户完成编辑后,我将多视图切换到完成状态。这种模式在页面中运行正常 问题是,当我返回主视图/页面时,用户返回控件,视图仍处于完成状态 重置/纠正多视图状态的简单方法有哪些?我可以在每个控件上都使用Reset()函数,但感觉可能可以避免这种情况 更新: 此页面旨在显示帐户/配置文件视图,包括以下部分: <asp:MultiView> ...read only view &l

我在同一页中嵌入了多个用户控件。用户控件通常有两个不同的视图,一个是“编辑/默认”视图,另一个是“完成”视图。当用户完成编辑后,我将多视图切换到完成状态。这种模式在页面中运行正常

问题是,当我返回主视图/页面时,用户返回控件,视图仍处于完成状态

重置/纠正多视图状态的简单方法有哪些?我可以在每个控件上都使用Reset()函数,但感觉可能可以避免这种情况

更新:

此页面旨在显示帐户/配置文件视图,包括以下部分:

<asp:MultiView>
...read only view 
<asp:EmailEditView>
<asp:AccountEditView>

以及重置视图。在另一个场景中,我可以添加一个事件处理程序,在用户单击“后退”时加载重新加载/绑定数据,即在此处我将表单更改为后退。

我试图重新创建问题的功能,同时消除用户控件的复杂性。这是我迄今为止最好的猜测(如果我错了,请纠正我)


我正在尝试重新创建问题的功能,同时消除用户控件的复杂性。这是我迄今为止最好的猜测(如果我错了,请纠正我)


您使用什么机制来存储控件的状态?我们可以看到一些代码吗?我不知道“问题是当我返回到主视图/页面,然后用户返回控件时,视图仍然处于完成状态。”意思是。@Greg我认为像这样将用户控件嵌入页面进行表单编辑是个坏主意,因为现在我必须跟踪用户控件的状态。您使用什么机制来存储控件的状态?我们可以看到一些代码吗?我不知道“问题是当我返回到主视图/页面,然后用户返回控件时,视图仍然处于完成状态。”意思是。@Greg我认为像这样将用户控件嵌入页面进行表单编辑是个坏主意,因为现在我必须跟踪用户控件的状态。一旦我单击“保存”或“取消”,我就不能返回默认视图来选择另一个视图。也许你可以把你的页面和它的工作流程贴出来?不,我可以“返回”到主窗体。但是,请记住,如果发生以下情况,它将产生这种效果!发回。所以数据不会加载。请参阅我的更新以了解我如何处理它。在调用用户控件之前,我为每个调用的用户控件添加了Reset()方法。这会更新表单并设置布尔值,在页面加载时,我有if(!Postback)| |(ifReset)--这也是在用户控件上重新加载数据所必需的。单击“保存”或“取消”后,我无法返回默认视图以选择其他视图。也许你可以把你的页面和它的工作流程贴出来?不,我可以“返回”到主窗体。但是,请记住,如果发生以下情况,它将产生这种效果!发回。所以数据不会加载。请参阅我的更新以了解我如何处理它。在调用用户控件之前,我为每个调用的用户控件添加了Reset()方法。这将更新表单并设置一个布尔值,在PageLoad上,我有if(!Postback)| |(ifReset)——这也是在用户控件上重新加载数据所必需的。
<asp:multiview>
<asp:view id="edit"/>
<asp:view id="completed"/>
if ((!IsPostback) || (reset) )
<asp:MultiView runat="server" ID="MainMultiView" ActiveViewIndex="0">
    <asp:View runat="server" ID="DefaultView">
        Default View
        <asp:Button runat="server" ID="EditEmailButton" Text="Edit Email" OnClick="EditEmailButton_Click" />
        <asp:Button runat="server" ID="EditAccountButton" Text="Edit Account" OnClick="EditAccountButton_Click" />
    </asp:View>
    <asp:View runat="server" ID="EmailView">
        <asp:MultiView runat="server" ID="EmailMultiView" ActiveViewIndex="0">
            <asp:View runat="server" ID="EmailEditView">
                Edit Email
                <asp:Button runat="server" ID="SaveEmailButton" Text="Save" 
                    onclick="SaveEmailButton_Click" />
                <asp:Button runat="server" ID="CancelEmailButton" Text="Cancel" 
                    onclick="CancelEmailButton_Click" />
            </asp:View>
            <asp:View runat="server" ID="EmailCompleteView">
                Email Edit Complete!
            </asp:View>
        </asp:MultiView>
    </asp:View>
    <asp:View runat="server" ID="AccountView">
        <asp:MultiView runat="server" ID="AccountMultiView" ActiveViewIndex="0">
            <asp:View runat="server" ID="AccountEditView">
                Edit Account
                <asp:Button runat="server" ID="SaveAccountButton" Text="Save" 
                    onclick="SaveAccountButton_Click" />
                <asp:Button runat="server" ID="CancelAccountButton" Text="Cancel" 
                    onclick="CancelAccountButton_Click" />
            </asp:View>
            <asp:View runat="server" ID="AccountCompleteView">
                Account Edit Complete!
            </asp:View>
        </asp:MultiView>
    </asp:View>
</asp:MultiView>
protected void EditEmailButton_Click(object sender, EventArgs e)
{
    MainMultiView.SetActiveView(EmailView);
}

protected void EditAccountButton_Click(object sender, EventArgs e)
{
    MainMultiView.SetActiveView(AccountView);
}

protected void SaveEmailButton_Click(object sender, EventArgs e)
{
    // Save();
    EmailMultiView.SetActiveView(EmailCompleteView);
}

protected void CancelEmailButton_Click(object sender, EventArgs e)
{
    EmailMultiView.SetActiveView(EmailCompleteView);
}

protected void SaveAccountButton_Click(object sender, EventArgs e)
{
    // Save();
    AccountMultiView.SetActiveView(AccountCompleteView);
}

protected void CancelAccountButton_Click(object sender, EventArgs e)
{
    AccountMultiView.SetActiveView(AccountCompleteView);
}