这里MVC中用到了反射,工厂,泛型,接口
在搭建框架的时候,除了MVC的三层以外,还有泛型的接口层和工厂层
下面是dal层调用sql存储过程,增删改查,dal层继承了接口层,实现了接口层里面的方法
  1 namespace DAL
  2 {
  3     public class DalHouse : IHouse
  4     {
  5         public int Add(HouseInfo m)
  6         {
  7             string sql = "pro_add";
  8             SqlParameter eid = new SqlParameter("@eid", m.Eid);
  9             SqlParameter bid = new SqlParameter("@bid", m.Bid);
 10             SqlParameter floornum = new SqlParameter("@floornum", m.FloorNum);
 11             SqlParameter roomnum = new SqlParameter("@roomnum", m.RoomNum);
 12             SqlParameter spaces = new SqlParameter("@spaces", m.Spaces);
 13             SqlParameter ads = new SqlParameter("@ads", m.Addresses);
 14             SqlParameter tid = new SqlParameter("@tid", m.Tid);
 15             SqlParameter sids = new SqlParameter("@sids", m.Sids);
 16             SqlParameter uid = new SqlParameter("@uid", m.Uid);
 17             SqlParameter[] paras = new SqlParameter[] { eid, bid, floornum, roomnum, spaces, ads, tid, sids, uid };
 18             int i = DbHelperSQL.ExecuteNonQuery(DbHelperSQL.ConnB2c, CommandType.StoredProcedure, sql, paras);
 19             return i;
 20         }
 21 
 22         public int Delete(string id)
 23         {
 24             string sql = "pro_delete";
 25             SqlParameter pid = new SqlParameter("@id", id);
 26             SqlParameter[] paras = new SqlParameter[] { pid };
 27             int i = DbHelperSQL.ExecuteNonQuery(DbHelperSQL.ConnB2c, CommandType.StoredProcedure, sql, paras);
 28             return i;
 29         }
 30 
 31         public HouseInfo SelectById(int id)
 32         {
 33             string sql = "pro_selectbyid";
 34             SqlParameter pid = new SqlParameter("@id",id);
 35             SqlParameter[] paras = new SqlParameter[] { pid};
 36            DataTable dt= DbHelperSQL.ExecuteDataTable(DbHelperSQL.ConnB2c,CommandType.StoredProcedure,sql,paras);
 37             List<HouseInfo> info = JsonConvert.DeserializeObject<List<HouseInfo>>(JsonConvert.SerializeObject(dt));
 38             return info[0];
 39         }
 40 
 41         public PageList ShowAll(DataModel d)
 42         {
 43             string sql = "pro_ShowAll";
 44             SqlParameter paraEid = new SqlParameter("@Estateid", d.Eid);
 45             SqlParameter paraBid = new SqlParameter("@BuildingId", d.Bid);
 46             SqlParameter paraTid = new SqlParameter("@Type", d.Tid);
 47             SqlParameter paraSid = new SqlParameter("@State", d.Sids);
 48             SqlParameter paraAddress = new SqlParameter("@Address", d.Addresses);
 49             SqlParameter paraSize = new SqlParameter("@size", d.Size);
 50             SqlParameter paraIndex = new SqlParameter("@index", d.Index);
 51             SqlParameter count = new SqlParameter("@totalCount", SqlDbType.Int);
 52             count.Direction = ParameterDirection.Output;
 53             SqlParameter page = new SqlParameter("@totalPage", SqlDbType.Int);
 54             page.Direction = ParameterDirection.Output;
 55             SqlParameter[] paras = new SqlParameter[] { paraEid, paraBid, paraTid, paraSid, paraAddress, paraSize, count, paraIndex, page };
 56            DataTable dt= DbHelperSQL.ExecuteDataTable(DbHelperSQL.ConnB2c,CommandType.StoredProcedure,sql,paras);
 57             PageList p = new PageList();
 58             p.TotalCount = Convert.ToInt32(count.Value);
 59             p.TotalPage = Convert.ToInt32(page.Value);
 60             p.House = JsonConvert.DeserializeObject<List<HouseInfo>>(JsonConvert.SerializeObject(dt));
 61             return p;
 62         }
 63 
 64         public List<Building> ShowBuilding()
 65         {
 66             string sql = "select * from Building";
 67              DataTable dt= DbHelperSQL.ExecuteDataTable(DbHelperSQL.ConnB2c,CommandType.Text,sql);
 68             return   JsonConvert.DeserializeObject<List<Building>>(JsonConvert.SerializeObject(dt));
 69 
 70         }
 71 
 72         public List<BuildStruct> ShowBuildStruct()
 73         {
 74             string sql = "select * from BuildStruct";
 75             DataTable dt = DbHelperSQL.ExecuteDataTable(DbHelperSQL.ConnB2c, CommandType.Text, sql);
 76             return JsonConvert.DeserializeObject<List<BuildStruct>>(JsonConvert.SerializeObject(dt));
 77         }
 78 
 79         public List<HouseEatate> ShowEstate()
 80         {
 81             string sql = "select * from HouseEstate";
 82             DataTable dt = DbHelperSQL.ExecuteDataTable(DbHelperSQL.ConnB2c, CommandType.Text, sql);
 83             return JsonConvert.DeserializeObject<List<HouseEatate>>(JsonConvert.SerializeObject(dt));
 84         }
 85 
 86         public List<States> ShowStates()
 87         {
 88             string sql = "select * from States";
 89             DataTable dt = DbHelperSQL.ExecuteDataTable(DbHelperSQL.ConnB2c, CommandType.Text, sql);
 90             return JsonConvert.DeserializeObject<List<States>>(JsonConvert.SerializeObject(dt));
 91         }
 92 
 93         public List<HouseType> ShowType()
 94         {
 95             string sql = "select * from HouseType";
 96             DataTable dt = DbHelperSQL.ExecuteDataTable(DbHelperSQL.ConnB2c, CommandType.Text, sql);
 97             return JsonConvert.DeserializeObject<List<HouseType>>(JsonConvert.SerializeObject(dt));
 98         }
 99 
100         public int Update(HouseInfo m)
101         {
102             string sql = "pro_update";
103             SqlParameter id = new SqlParameter("@id", m.Id);
104             SqlParameter eid = new SqlParameter("@eid",m.Eid);
105             SqlParameter bid = new SqlParameter("@bid", m.Bid);
106             SqlParameter floornum = new SqlParameter("@floornum", m.FloorNum);
107             SqlParameter roomnum = new SqlParameter("@roomnum", m.RoomNum);
108             SqlParameter spaces = new SqlParameter("@spaces", m.Spaces);
109             SqlParameter ads = new SqlParameter("@ads", m.Addresses);
110             SqlParameter tid = new SqlParameter("@tid", m.Tid);
111             SqlParameter sids = new SqlParameter("@sids", m.Sids);
112             SqlParameter uid = new SqlParameter("@uid", m.Uid);
113             SqlParameter[] paras = new SqlParameter[] {id,eid,bid,floornum,roomnum,spaces,ads,tid,sids,uid };
114            int i= DbHelperSQL.ExecuteNonQuery(DbHelperSQL.ConnB2c,CommandType.StoredProcedure,sql,paras);
115             return i;
116 
117         }
118     }
119 }
View Code
 
 这是controller与前台交互,控制器里面的方法需要注意的是下拉的绑定,还有分部视图的使用
我用的是强类型视图,所以视图页面和控制器里面参数的变量名要一致,否则控制器中的方法接受不到值的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DAL;
using IDAL;
using Model;
using Factory;
using BLL;
namespace EF_House.Controllers
{
    public class HouseController : Controller
    {
       
        // GET: House
        public ActionResult Index(int index=1,int size=3)
        {
            DataModel d = new DataModel();
            d.Bid = 0;
            d.Eid = 0;
            d.Sids = 0;
            d.Tid = 0;
            d.Addresses = "";
            d.Index = index;
            d.Size = size;
            BllHouse bll = new BllHouse();
            PageList info = bll.ShowAll(d);
            ViewBag.totalpage = info.TotalPage;
            ViewBag.totalcount = info.TotalCount;
            ViewBag.index = d.Index;
            //下拉绑定
            ViewBag.Estate = new SelectList(bll.ShowEatate(), "Id", "Ename");
            ViewBag.HouseType = new SelectList(bll.ShowType(), "Id", "TypeName");
            ViewBag.States = new SelectList(bll.ShowStates(), "Id", "Sname");
            ViewBag.Building = new SelectList(bll.ShowBuilding(), "Bid", "Bname");
            return View(info.House);
        }
        public ActionResult Search(string Addresses="",int Bid=0,int Eid=0,int Sids=0,int Tid=0,int index=1,int size=3)
        {
            if (Addresses == null)
            {
                Addresses = "";
            }
            ViewBag.bid = Bid;
            ViewBag.eid = Eid;
            ViewBag.sids = Sids;
            ViewBag.tid = Tid;
            ViewBag.ads = Addresses;
            DataModel d = new DataModel();
            d.Bid = Bid;
            d.Eid = Eid;
            d.Sids = Sids;
            d.Tid = Tid;
            d.Addresses = Addresses;
            d.Index = index;
            d.Size = size;
           
            BllHouse bll = new BllHouse();
            PageList p = bll.ShowAll(d);
            ViewBag.totalcount = p.TotalCount;
            ViewBag.totalpage = p.TotalPage;
            ViewBag.index = d.Index;
            //下拉绑定
            ViewBag.Estate = new SelectList(bll.ShowEatate(), "Id", "Ename");
            ViewBag.HouseType = new SelectList(bll.ShowType(), "Id", "TypeName");
            ViewBag.States = new SelectList(bll.ShowStates(), "Id", "Sname");
            ViewBag.Building = new SelectList(bll.ShowBuilding(), "Bid", "Bname");

            return PartialView("Search",p.House);
        }
        public int DeleteAll(string id)
        {
            BllHouse bll = new BllHouse();
            int i = bll.Delete(id);
            return i;
        }
        public void Delete(string id)
        {
            BllHouse bll = new BllHouse();
            int i = bll.Delete(id);
            if (i > 0)
            {
                Response.Write("<script>alert('删除成功');location.href='/house/index/1'</script>");
            }
            else
            {
                Response.Write("<script>alert('删除失败')</script>");
            }
        }
        public ActionResult Update(int id)
        {
            BllHouse bll = new BllHouse();
            ViewBag.Estate = new SelectList(bll.ShowEatate(), "Id", "Ename");
            ViewBag.HouseType = new SelectList(bll.ShowType(), "Id", "TypeName");
            ViewBag.States = new SelectList(bll.ShowStates(), "Id", "Sname");
            ViewBag.Building = new SelectList(bll.ShowBuilding(), "Bid", "Bname");
            ViewBag.Struct = new SelectList(bll.ShowBuildStruct(), "Id", "Uname");
            
            HouseInfo h = bll.SelectById(id);
           
            return View(h);
        }
        [HttpPost]
        public void Update(HouseInfo h)
        {
            BllHouse bll = new BllHouse();
            int i = bll.Update(h);
            if (i > 0)
            {
                Response.Write("<script>alert('修改成功');location.href='/house/index/1'</script>");
            }
            else
            {
                Response.Write("<script>alert('修改失败')</script>");
            }
        }
        public ActionResult Add()
        {
            BllHouse bll = new BllHouse();
            ViewBag.Estate = new SelectList(bll.ShowEatate(), "Id", "Ename");
            ViewBag.HouseType = new SelectList(bll.ShowType(), "Id", "TypeName");
            ViewBag.States = new SelectList(bll.ShowStates(), "Id", "Sname");
            ViewBag.Building = new SelectList(bll.ShowBuilding(), "Bid", "Bname");
            ViewBag.Struct = new SelectList(bll.ShowBuildStruct(), "Id", "Uname");
            return View();
        }
        [HttpPost]
        public ActionResult Add(HouseInfo h)
        {
            BllHouse bll = new BllHouse();
            int i = bll.Add(h);
            if (i > 0)
            {
                return Content("<script>alert('添加成功');location.href='/house/index/1'</script>");
            }
            else
            {
                return Content("<script>alert('添加失败')</script>");
            }
            
        }
    }
}
View Code

 

 这里需要说一下,jquery写的全选和批删的方法,详情看代码
复制代码
 
 <script>
//全选
        $(function () {
            $("#CheckAll").click(function () {
                if (this.checked) {
                    $("input[name='check']").each(function () {
                        this.checked = true;
                    })
                }


                else {
                    $("input[name='check']:checked").each(function () {
                        this.checked = false;
                    })
                }



            })
        })
        function DelAll() {
            var check = [];
            $("input[name='check']:checked").each(function () {
                check.push($(this).val());
            })
            if (check == 0) {
                alert("请先进行选择");
            }
            else {
                $.ajax({
                    type: "post",
                    url: "/house/deleteall",
                    data: { id: check.toString() },
                    success: function (a) {
                        if (a > 0) {
                            alert("批量删除成功!");
                            location.reload();
                        }
                    }
                })
            }

        }
    </script>
View Code

 

基本的页面布局,这里就不展示了,

还需要说的就是使用强类型视图,在修改的时候,

需要使用@html.Hidden("Id")

复制代码