AJax技术

Ajax 动态加载UserControl的问题

字号+ 作者:H5之家 来源:H5之家 2017-12-20 09:40 我要评论( )

【话题】Ajax 动态加载UserControl的问题 2009-09-16 11:07:27 来自:思绪跳跃 浏览数: 51 次 我有三个UserControl: Top.ascx, LoginBar.ascx,Logined.ascx. 想在top.ascx 中动态加载后面连个控件,当session[user]=null 是加载loginBar.ascx 非空时 加载l

【话题】Ajax 动态加载UserControl的问题

2009-09-16 11:07:27 来自:思绪跳跃 浏览数:51

我有三个UserControl: Top.ascx, LoginBar.ascx,Logined.ascx. 想在top.ascx 中动态加载后面连个控件,当session["user"]=null 是加载loginBar.ascx 非空时 加载logined.ascx 表明用户已经登录并显示登录信息。用非Ajax,已经可以实现了,但现在想用Ajax显示无刷新的动态加载。

LoginBar.ascx 中,当用户输入正确的用户名和密码后,就回去设 Session["User"] ,现在不知道怎么做的当session["user"]有指后,让Top.ascx 中的UpdatePanel 去update 加载新的用户控件?

现在的代码如下:
Top.ascx (UpdatePanel 中的LogControl div 是用来放加载的2个用户控件的
<%@ Register Src="LoginBar.ascx" TagName="LoginBar" TagPrefix="uc2" %>
<%@ Register Src="Logined.ascx" TagName="Logined" TagPrefix="uc1" %>

<asp:ScriptManager ID="sm" runat="server">
</asp:ScriptManager>
<div style="text-align: center;">
<asp:UpdatePanel ID="updatePanel1" runat="server" UpdateMode="Conditional">
      <ContentTemplate>
                <div id="LogControl" runat="server">
                </div>
      </ContentTemplate>
</asp:UpdatePanel>
--------------------------------------------------------------
Top.ascx.cs
public partial class Top : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

        if (Session["User"] == null || Session["User"].ToString()=="")
        {
            Control ct = LoadControl("LoginBar.ascx");
            LogControl.Controls.Clear();
            LogControl.Controls.Add(ct);
        }
        else
        {
            Control ct = LoadControl("Logined.ascx");
            LogControl.Controls.Clear();
            LogControl.Controls.Add(ct);
        }
    }
}
--------------------------------------------------------------------
LoginBar.ascx (是用户登录条)
<table border="0" align="center" cellpadding="0" cellspacing="0" style="width: 750px;
    height: 34px">
    <tr>
        <td style="width: 70px;">
        </td>
        <td class="fontlogin" style="width: 65px; text-align: left;">
            用户名: </td>
        <td align="left" style="width: 170px">
            <asp:TextBox CssClass="textbox" ID="txtUid" runat="server" Height="16px" Width="150px"> </asp:TextBox> </td>
        <td valign="middle" class="fontlogin" style="width: 65px; text-align: left;">
            密 码: </td>
        <td align="left" style="width: 170px">
            <asp:TextBox CssClass="textbox" ID="txtPwd" runat="server" TextMode="Password" Height="16px" Width="150px"> </asp:TextBox> </td>
        <td style="width: 80px; text-align: left;">
            <asp:ImageButton ID="ibtnLogin" runat="server" ImageUrl="../images/btnLogin.jpg" OnClick="ibtnLogin_Click" CausesValidation="False" /> </td>
        <td align="left" valign="middle">
            <asp:ImageButton ID="ibtnRegister" runat="server" ImageUrl="../images/btnRegister.jpg"
                OnClick="ibtnRegister_Click" CausesValidation="False" /> </td>
    </tr>
</table>
-----------------------------------------------------------------
LoginBar.ascx.cs
public partial class LoginBar : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
   
    }

    protected void ibtnLogin_Click(object sender, ImageClickEventArgs e)
    {
        string strUid = this.txtUid.Text.Trim();
        string strPwd = this.txtPwd.Text.Trim();

        if (strUid != "" && strPwd != "")
        {
            string role = Users.VerifyUserLogin(strUid, strPwd);

            if (role != string.Empty)
            {
                Session["User"] = strUid;
               
            }

        }
    }
    protected void ibtnRegister_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("Register.aspx");
    }
}
------------------------------------------------------------------------------------
Logined.ascx (显示登录后信息)
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Logined.ascx.cs" Inherits="Logined" %>
<table border="0" align="center" cellpadding="0" cellspacing="0" background="images/lbg.jpg"
    style="width: 750px; height: 34px">
    <tr>
        <td>
            <div align="center">
                欢迎您!
                <asp:Label ID="lblUid" runat="server" Text="用户名"> </asp:Label>
                <asp:LinkButton ID="lbtnLogout" runat="server" OnClick="lbtnLogout_Click" CausesValidation="False">注销 </asp:LinkButton>
            </div>
        </td>
        <td>
        </td>
    </tr>
</table>

logined.ascx.cx
public partial class Logined : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["User"] != null && Session["User"].ToString()!="")
        {
            this.lblUid.Text = Session["User"].ToString();
        }
    }
    protected void lbtnLogout_Click(object sender, EventArgs e)
    {
        Session.Clear();
       
    }
 
}

更多相关的话题

 

柠檬茶回复于16日11点16分 

有人能解吗?

 

kuailemama回复于16日11点31分 



这个ViewPanel 怎么用? 一个类不能直接拖到ASPX里吧

 

白雪公主1回复于16日11点47分 

顶哈子,免得沉了

 

我爱物理书回复于16日12点01分 

顶下。。。

 

燕小燕回复于16日12点14分 

 

lxh0452回复于16日12点29分 

OK, Cat 已经解决了, ViewPanel 很方便。

 

syfx-myr回复于16日12点41分 

补充下:

在LoginBar.ascx 按登录 和在logined.ascx中的 注销 linkbuttion 都要点两下才运行注销?

 

潘乃延回复于16日12点57分 

如需要阅读该回复,请登录或注册CSDN!

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • jquery中的ajax同步和异步详解,jqueryajax

    jquery中的ajax同步和异步详解,jqueryajax

    2017-12-19 15:36

  • 通过jQuery Ajax使用FormData对象上传文件

    通过jQuery Ajax使用FormData对象上传文件

    2017-12-16 13:04

  • 第108天:Ajax中XMLHttpRequest详解

    第108天:Ajax中XMLHttpRequest详解

    2017-12-15 17:05

  • ajax小技巧,防止多次点击发送多个请求

    ajax小技巧,防止多次点击发送多个请求

    2017-12-15 13:14

网友点评