Asp.Net:三层修改功能

一、思路

第一步:点击修改按钮跳出修改窗口,并为窗口赋值

第二步:修改之后后,点击提交修改,跳转到主页面

二、代码实现

1.实现修改窗口呈现。

(1)为DAL数据交互层添加GetMainInfoByRowDal()方法,根据id条件查询数据。

  /// <summary>
        /// 条件查询数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public MainInfo GetMainInfoByRowDal(int id)
        {
            MainInfo mainInfo = new MainInfo();
            string sqlStr = @"Select
	                            *
                            from
	                            [dbo].[HKSJ_Main]
                            where 
	                            ID=@id";
            using (SqlDataReader sdr = SqlHelper.ExecuteReader(sqlStr, CommandType.Text, new SqlParameter("@id", SqlDbType.Int) { Value = id }))
            {
                if (sdr.HasRows)
                {
                    if (sdr.Read())
                    {
                        mainInfo.ID = sdr.GetInt32(0);
                        mainInfo.Title = sdr.GetString(1);
                        mainInfo.Content = sdr.GetString(2);
                        mainInfo.Type = sdr.GetString(3);
                        mainInfo.Date = sdr.GetDateTime(4);
                        mainInfo.People = sdr.GetString(5);
                        mainInfo.PicUrl = sdr.IsDBNull(6) ? null : sdr.GetString(6);
                    }
                }
            }
            return mainInfo;
        }

(2) 为BLL业务逻辑处理层添加GetMainInfoByRowBll()方法,进行业务逻辑处理

/// <summary>
        /// 条件查询
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public MainInfo GetMainInfoByRowBll(int id)
        {
            return mainInfoDAL.GetMainInfoByRowDal(id);
        }

(3)UI展示层,为网站添加EditNews.ashx一般处理程序,用于数据展示

<%@ WebHandler Language="C#" Class="EditNews" %>

using System;
using System.Web;
using System.IO;
public class EditNews : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/html";
        int id = int.Parse(context.Request["id"]);
        BLL.MainInfoBLL mainInfo = new BLL.MainInfoBLL();
        Modle.MainInfo mainInfo1 = mainInfo.GetMainInfoByRowBll(id);
        string stringTemp = File.ReadAllText(context.Request.MapPath("EditNewsTemp.html"));
        stringTemp = stringTemp.Replace("@ID", mainInfo1.ID.ToString()).Replace("@Title", mainInfo1.Title).Replace("@People", mainInfo1.People);
            context.Response.Write(stringTemp);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

模型:EditNewsTemp.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <form action="/ProcessEditNews.ashx" method="post">
        <table>
            <tr>
                <td>
                    序号:
                </td>
                <td>
                    @ID
                    <input type="hidden" name="hidId" value="@ID" />
                </td>
            </tr>
            <tr>
                <td>
                    标题:
                </td>
                <td>
                    <input type="text" name="title" value="@Title" />
                </td>
            </tr>
            <tr>
                <td>
                    新闻发布人:
                </td>
                <td>
                    <input type="text" name="people" value="@People" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" value="修改" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

2.实现数据提交呈现

(1)为DAL数据交互层添加UpdateMainInfoByRowDal()方法,根据mainInfo参数数据修改数据库数据。

/// <summary>
        /// 修改
        /// </summary>
        /// <param name="mainInfo"></param>
        /// <returns></returns>
        public int UpdateMainInfoByRowDal(MainInfo mainInfo)
        {
            string sqlStr = @"update [dbo].[HKSJ_Main] set title=@Title,people=@People where ID=@id";
            SqlParameter[] pars =
            {
                new SqlParameter("@id",SqlDbType.Int){Value=mainInfo.ID},
                new SqlParameter("@Title",SqlDbType.NVarChar,200){Value=mainInfo.Title},
                new SqlParameter("@People",SqlDbType.NVarChar,20){Value=mainInfo.People}
            };
            return SqlHelper.ExectuNoQurey(sqlStr, CommandType.Text, pars);
        }

(2)为BLL业务逻辑处理层添加UpdateMainInfoByRowBll()方法,进行业务逻辑处理

         public int UpdateMainInfoByRowBll(MainInfo mainInfo)
        {
            return mainInfoDAL.UpdateMainInfoByRowDal(mainInfo);
        }

(3)UI展示层,为网站添加ProcessEditNews一般处理程序,用于数据展示

<%@ WebHandler Language="C#" Class="ProcessEditNews" %>

using System;
using System.Web;

public class ProcessEditNews : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        //context.Response.Write("Hello World");
        int id = int.Parse(context.Request["hidId"] ?? "0");
        BLL.MainInfoBLL mainInfo = new BLL.MainInfoBLL();
        var mi = mainInfo.GetMainInfoByRowBll(id);
        mi.Title = context.Request["title"];
        mi.People = context.Request["people"];
        mainInfo.UpdateMainInfoByRowBll(mi);
        context.Response.Redirect("MainList.ashx");


    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值