• 牛腩购物网24:asp.net 内置票据验证用户的注销/退出,商品的收藏功能制作,repeater 行循环事件,linkbutton 传值


    网站使用 asp.net 内置票据验证登陆之后,如果我们需要注销/退出,那么如何编写代码?

    如果的注销,实际上用的是asp.net 登陆控件

    LoginView  用来显示登录前和登陆后的样子,其中  AnonymousTemplate 显示登录前的样子,我们把登陆框放在里面用来显示登陆。

    LoggedInTemplate     显示登陆后的样子,我们用  LoginName 显示登录名,LoginStatus 显示注销

     <asp:LoginView ID="LoginView1" runat="server">
                    <AnonymousTemplate>
                    <table width="100%" height="134" border="0">
                        <tr>
                            <td height="48">
                                &nbsp;
                            </td>
                        </tr>
                        <tr>
                            <td>
                                用户:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                密码:<asp:TextBox ID="txtPwd" runat="server" TextMode="Password"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td align="center">
                                <asp:LinkButton ID="lbtnLogin" runat="server" OnClick="lbtnLogin_Click">登录</asp:LinkButton><a
                                    href="#"></a> <a href="reg1.aspx">注册</a> <a href="getpwd1.aspx" target="_blank">忘记密码</a>
                            </td>
                        </tr>
                    </table>
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                    <br><br><br>欢迎您,<asp:LoginName ID="LoginName1" runat="server" />
                        <asp:LoginStatus ID="LoginStatus1" runat="server" />
                    </LoggedInTemplate>
                    </asp:LoginView>
     
    详情请看:http://www.cnblogs.com/1727050508/archive/2012/03/16/2399950.html
     

    image

    但是这个后面的退出,是一个 LinkButton

    首先,我们需要引用

    using System.Web.Security;  //asp.net 票据认证
    <asp:LinkButton ID="ltblLoginOut" runat="server"  OnClick="ltblLoginOut_Click">退出</asp:LinkButton>
    //点击退出
            protected void ltblLoginOut_Click(object sender, EventArgs e)
            {
                FormsAuthentication.SignOut();
                Response.Redirect("~/default.aspx");  //退出后重定向到网站的跟目下的首页
            }

    下面是产品收藏夹的制作。

    创建收藏夹表:

    image

    然后打开动软生成器,生成DAL层代码和 Model层代码

    image

    注意这里的项目名称要和我们VS里面的项目名称相对应。image

    image

    然后我们选择 数据库,右键点击 批量生成代码

    image image

    动软生成器的作用到此完毕,现在把Model层 的 Favorite.cs 和 DAL层的 FavoriteDAO.cs  拷贝到 Vs里面的 Model层 和 DAL  层。

    删除掉 FavoriteDAO.cs 里面多余的代码

    image

    。然后在把 计算记录数和分页的方法拷贝到 FavoriteDAO.cs  里面。

    /// <summary>根据sql计算记录数
            /// 
            /// </summary>
            /// <param name="strWhere"></param>
            /// <returns></returns>
            public int CalcCount(string strWhere)
            {
                string sql = "select count(1) from shop_favorite";
                if (!string.IsNullOrEmpty(strWhere))
                {
                    sql += " where "+ strWhere;
                }
                Database db = DatabaseFactory.CreateDatabase();
                DbCommand dbcommand = db.GetSqlStringCommand(sql);
                return int.Parse(db.ExecuteScalar(dbcommand).ToString());
            }
            /// <summary>分页获取数据列表
            /// 
            /// </summary>
            /// <param name="strGetFields">选择的字段</param>
            /// <param name="strOrder">排序字段</param>
            /// <param name="strOrderType">排序类型 desc或者asc</param>
            /// /// <param name="PageSize">页面大小</param>
            /// <param name="PageIndex">页索引</param>
            /// <param name="strWhere">条件</param>
            /// <returns></returns>
            public DataSet GetList(string strGetFields, string strOrder, string strOrderType, int PageSize, int PageIndex, string strWhere)
            {
                Database db = DatabaseFactory.CreateDatabase();
                DbCommand dbCommand = db.GetStoredProcCommand("proc_FenYe");
                db.AddInParameter(dbCommand, "tblName", DbType.AnsiString, "shop_favorite");
                db.AddInParameter(dbCommand, "strGetFields", DbType.AnsiString, strGetFields);
                db.AddInParameter(dbCommand, "PageSize", DbType.Int32, PageSize);
                db.AddInParameter(dbCommand, "PageIndex", DbType.Int32, PageIndex);
                db.AddInParameter(dbCommand, "strOrder ", DbType.String, strOrder);
                db.AddInParameter(dbCommand, "strOrderType", DbType.String, strOrderType);
                db.AddInParameter(dbCommand, "strWhere", DbType.AnsiString, strWhere);
                return db.ExecuteDataSet(dbCommand);
            }

    ,最后我们在 web层的页面里面调用即可。

    repeater 行循环事件,用到 OnItemDataBound="repFav_ItemDataBound"   表示,当rep循环的时候,执行的事件

     
    <asp:Repeater ID="repFav" runat="server" OnItemDataBound="repFav_ItemDataBound">
             <ItemTemplate>
                 <tr bgcolor="#FFFFFF">
                      <td height="22"> <div align="center"><input name="shopid" type="checkbox" checked="" value='<%#Eval("id") %>'> </div>
                       </td>
                       <td style="padding-left: 5px" height="22"> <div align="left">
                                                <asp:HiddenField ID="hfProid" runat="server" Value='<%#Eval("proid") %>' />
                                                <!--这里做一个隐藏的id,那么后台rep的时候,就知道ID是多少了-->
                                                <asp:Literal ID="litProname" runat="server"></asp:Literal>
                       </td>
                       <td height="22"> <div align="center">
                                                <s><asp:Literal ID="litMarketPrice" runat="server"></asp:Literal></s></div>
                         </td>
                         <td height="22">
                                            <div align="center"><asp:Literal ID="litmemberprice" runat="server"></asp:Literal></div>
                         </td>
                         <td height="22"><div align="center"><asp:Literal ID="litvipprice" runat="server"></asp:Literal></div>
                         </td>
                         <td height="22"><div align="center">
    <asp:LinkButton ID="lbtn_del" OnClientClick="return confirm('确认删除?')" 
    OnClick="lbtn_del_Click" runat="server" CommandArgument='<%#Eval("id")%>'>
    <img src="../images/trash.gif" width="15" height="17" border="0"></asp:LinkButton>
                                            </div>
                                        </td>
                                    </tr>
                                </ItemTemplate>
                            </asp:Repeater>

    后台代码:

            //rep循环绑定
            protected void repFav_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
                {
                    HiddenField hfProid = e.Item.FindControl("hfProid") as HiddenField;
                    Literal litProname = e.Item.FindControl("litProname") as Literal;
                    Literal litMarketPrice = e.Item.FindControl("litMarketPrice") as Literal;
                    Literal litmemberprice = e.Item.FindControl("litmemberprice") as Literal;
                    Literal litvipprice = e.Item.FindControl("litvipprice") as Literal;
    
                    Model.Product pt = new DAL.ProductDAO().GetModel(int.Parse(hfProid.Value));
                    if (pt != null)
                    {
                        litProname.Text = "<a href='/pro.aspx?id=" + pt.id + "' target='_blank'>" + pt.proname + "</a>";
                        litMarketPrice.Text = pt.marketprice.ToString("c2");
                        litmemberprice.Text = pt.memberprice.ToString("c2");
                        litvipprice.Text = pt.vipprice.ToString("c2");
                    }
                }
            }

    linkbutton 传值

    image

    前台:

    <asp:LinkButton ID="lbtn_del" OnClientClick="return confirm('确认删除?')" 
    OnClick="lbtn_del_Click" runat="server" CommandArgument='<%#Eval("id")%>'>
    <img src="../images/trash.gif" width="15" height="17" border="0"></asp:LinkButton>

    后台:

    //删除收藏
            protected void lbtn_del_Click(object sender, EventArgs e)
            {
                string id = (sender as LinkButton).CommandArgument.ToString();
                new DAL.FavoriteDAO().Delete(int.Parse(id));
                Response.Redirect(Request.Url.ToString());
            }
  • 相关阅读:
    小问题收集
    JSON.NET与LINQ序列化示例教程
    前台页面中json和字符串相互转化
    jQuery Validate (1)
    jQuery Validate (摘自官网)
    SQL基础(八)-- sql左右连接中的on and 和 on where 的区别
    SQL基础(七)--or和in的使用
    SQL基础(六)--RaiseError的用法
    C#基础(三)--Sort排序
    C#中Equals和==的区别 (面试官经常会问到)
  • 原文地址:https://www.cnblogs.com/iceicebaby/p/2440355.html
Copyright © 2020-2023  润新知