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