saucer(思归)解决的关于:页面A.aspx 动态载入用户自定义控件a.ascx,但a.ascx中的按钮提交后,不执行按钮的事件,而是直接刷新页面
2008-04-17 15:00 Virus-BeautyCode 阅读(1028) 评论(0) 编辑 收藏 举报1. TestA.ascx:
<%@ Register TagPrefix="uc" TagName="MyControl" Src="A.ascx" %>
<form runat="server">
<uc:MyControl id="mc" runat="server"/>
<hr>
<asp:Button id="btn" runat="server" Text="Refresh" />
</form>
2. a.ascx:
<asp:TextBox id="tb1" runat="server" />
<asp:LinkButton id="LinkButton1" runat="server" Text="Load" OnClick="LinkButton1_Click"/>
<script language="C#" runat="server">
private void LinkButton1_Click(object sender, System.EventArgs e)
{
string s = tb1.Text.Trim();
if (!s.Equals(String.Empty))
LoadUserControl(s);
}
string LoadedControl
{
get
{
object o = ViewState["LoadedControl"];
if (o == null)
return "";
else
return (string)ViewState["LoadedControl"];
}
set
{
ViewState["LoadedControl"] = value;
}
}
int LoadedControlID
{
get
{
object o = ViewState["LoadedControlID"];
if (o == null)
return 0;
else
return (int)ViewState["LoadedControlID"];
}
set
{
ViewState["LoadedControlID"] = value;
}
}
void LoadUserControl(string strPathName)
{
if (strPathName.Equals(String.Empty))
return;
Control parent = Page.FindControl("ContentPane");
if (LoadedControl != strPathName)
{
if (parent.Controls.Count > 0)
parent.Controls.Clear();
LoadedControlID++;
}
LoadedControl = strPathName;
Control c = LoadControl(strPathName);
if (c != null)
{
c.ID = "ID" + LoadedControlID.ToString() ;
parent.Controls.Add(c);
}
}
void Page_Load(Object sender, EventArgs e)
{
if (!LoadedControl.Equals(String.Empty))
LoadUserControl(LoadedControl);
}
</script>
3. b.ascx:
b.ascx: <%=DateTime.Now%>
<asp:Button id="btn" runat="server" Text="Button in B.ascx" OnClick="Button1_Click" />
<script language="C#" runat="server">
private void Button1_Click(object sender, System.EventArgs e)
{
Page.Response.Write("BUtton in B is Clicked at " + DateTime.Now.ToString());
}
</script>
4. c.ascx:
c.ascx: <%=DateTime.Now%>
<asp:Button id="btn" runat="server" Text="Button in C.ascx" OnClick="Button1_Click" />
<script language="C#" runat="server">
private void Button1_Click(object sender, System.EventArgs e)
{
Page.Response.Write("BUtton in C is Clicked at " + DateTime.Now.ToString());
}
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构