zoukankan      html  css  js  c++  java
  • MVC+EF+EasyUI实现CRUD

    在写代码的时候,一直搞不懂MVC的运行过程,通过这次摸索,好像清晰了不少:

    阶段

    详细

    接收应用程序的第一次请求

    在Global.asax文件中, Route对象 被添加到RouteTable对象.

    执行路由选择

    UrlRoutingModule 模块使用第一个在RouteTable 集合中匹配的Route 对象来创建RouteData对象, 然后它将使用这个RouteData对象来创建RequestContext (IHttpContext)对象.

    创建MVC request handler

    MvcRouteHandler 创建MvcHandler类的一个实例,并且将它传递给RequestContext实例.

    创建controller

    MvcHandler对象使用RequestContext实例来确认IControllerFactory 对象(DefaultControllerFactory类的一个实例) ,以用来创建conteoller实例。

    执行controller

    MvcHandler 实例调用controller的执行method.

    调用action

    大部分controllers 继承自Controller基础类. 与controller相关联的ControllerActionInvoker 对象决定这个controller类的哪个方法将被调用 , 然后再调用那个方法.

    执行result

    大部分controllers 继承自Controller基础类. 与controller相关联的ControllerActionInvoker 对象决定这个controller类的哪个方法将被调用 , 然后再调用那个方法.

     

    总而言之,向Web程序发生请求的时候,通过路由中的指定控制器(Controller)和视图(View)切入访问,返回执行结果。

    MVC中的V相当于以前ASP.NET中的aspx页面,C相当于一般处理程序或.aspx.cs文件。

    这是我个人理解,如果有误,希望提醒。

    下面附上代码:

    首先是前台的View代码

      1 @model Model.Users
      2 
      3 @{
      4     Layout = null;
      5 }
      6 
      7 <!DOCTYPE html>
      8 
      9 <html>
     10 <head>
     11     <meta name="viewport" content="width=device-width" />
     12     <title>List</title>
     13     <link href="~/CSS/themes/default/easyui.css" rel="stylesheet" />
     14     <link href="~/CSS/themes/icon.css" rel="stylesheet" />
     15     <script src="~/Scripts/jquery-1.8.2.min.js"></script>
     16     <script src="~/Scripts/jquery.easyui.min.js"></script>
     17     <script src="~/Scripts/easyui-lang-zh_CN.js"></script>
     18     <script type="text/javascript">
     19         $(function () {
     20             $('#test').datagrid({
     21                 url: '/Users/List',
     22                 method:'post',
     23                 title: '用户列表',
     24                  700,
     25                 height: 400,
     26                 fitColumns: true,
     27                 idField: 'Id',
     28                 loadMsg: '正在加载用户的信息...',
     29                 pagination: true,
     30                 singleSelect: false,
     31                 pageNumber:1,
     32                 pageList: [10, 20, 30],
     33                 queryParams: {},
     34                 columns: [[
     35                         { field: 'ck', checkbox: true, align: 'left',  50 },
     36                         { field: 'Id', title: '主键',  80 },
     37                         { field: 'LoginId', title: '用户名',  120 },
     38                         { field: 'Name', title: '真实姓名',  120 },
     39                         { field: 'Phone', title: '电话',  120 },              
     40         ]],
     41                 toolbar:[{
     42                     id:'btnadd',
     43                     text:'Add',
     44                     iconCls:'icon-add',
     45                     handler:function(){
     46                         window.location.href = "/Users/Create";
     47                     }
     48                 },'-',{
     49                     id:'btnDelete',
     50                     text:'Delete',
     51                     iconCls:'icon-cut',
     52                     handler: function () {
     53                         var rows = $('#test').datagrid("getSelections");
     54                         if (rows.length != 1) {
     55                             $.messager.alert("消息提醒", "会删除吗?", "warning");
     56                             return;
     57                         }
     58                         var selectId=rows[0].Id;
     59                         window.location.href = "/Users/Delete?Id="+selectId;
     60                     }
     61                 },'-',{
     62                     id:'btnEdit',
     63                     text:'Edit',
     64                     iconCls:'icon-edit',
     65                     handler: function () {
     66                         var rows = $('#test').datagrid("getSelections");
     67                         if (rows.length != 1) {
     68                             $.messager.alert("消息提醒", "会修改吗?", "warning");
     69                             return;
     70                         }
     71                         var selectId = rows[0].Id;
     72                         window.location.href = "/Users/Edit?Id=" + selectId;
     73                     }
     74                 }, '-', {
     75                     id: 'btnDetail',
     76                     text: 'Detail',
     77                     iconCls: 'icon-search',
     78                     handler: function () {
     79                         var rows = $('#test').datagrid("getSelections");
     80                         if (rows.length != 1) {
     81                             $.messager.alert("消息提醒", "能只选一行吗?", "warning");
     82                             return;
     83                         }
     84                         var selectId = rows[0].Id;
     85                         window.location.href = "/Users/Detail?Id=" + selectId;
     86                     }
     87                 }
     88                 ],
     89                 onHeaderContextMenu: function (e, field) {
     90 
     91                 }
     92             });
     93 
     94         })
     95     </script>
     96 </head>
     97 <body>
     98     <table id="test"></table>
     99 </body>
    100 </html>

    后台控制器Control代码

     1 public class UsersController : Controller
     2     {
     3         //
     4         // GET: /Users/
     5         UsersBll usersBll = new UsersBll();
     6         public ActionResult Index()
     7         {
     8             //int total = 0;
     9             //ViewData["Users"] = usersBll.GetPageModel(u => u.Id != 0, u => u.Id, pagesize, pageindex, isDes, out total);
    10             //ViewData["pageStr"] = Common.LaomaPager.ShowPageNavigate(pagesize, pageindex, total);
    11             
    12             return View("List");
    13         }
    14         [HttpPost]
    15         public JsonResult List(int pagesize = 10, int pageindex = 1, bool isDes = false)
    16         {
    17             int total = 0;
    18             pagesize = int.Parse(Request["rows"]??"10");
    19             pageindex = int.Parse(Request["page"]??"1");
    20 
    21             List<Users> list = usersBll.GetPageModel(u => u.Id != 0, u => u.Id, pagesize, pageindex, isDes, out total);
    22             //ViewData["pageStr"] = Common.LaomaPager.ShowPageNavigate(pagesize, pageindex, total);
    23             Hashtable ht = new Hashtable();
    24             ht["total"] = total;
    25             ht["rows"] = list;
    26             return Json(ht,JsonRequestBehavior.AllowGet);
    27         }
    28         public ActionResult Create()
    29         {
    30             return View();
    31         }
    32         [HttpPost]
    33         public ActionResult Create(Users user)
    34         {
    35             if (ModelState.IsValid)
    36             {
    37                 user.LoginPwd = Common.ComHelper.StringToMd5(user.LoginPwd);
    38                 usersBll.AddUser(user);
    39                 return RedirectToAction("Index");
    40             }
    41             return View(user);
    42         }
    43 
    44         public ActionResult Edit(int id = 0)
    45         {
    46             Users user = usersBll.GetUserById(id);
    47             if (user == null)
    48             {
    49                 return HttpNotFound();
    50             }
    51             return View(user);
    52         }
    53 
    54         [HttpPost]
    55         public ActionResult Edit(Users user)
    56         {
    57             if (ModelState.IsValid)
    58             {
    59                 usersBll.Edit(user);
    60                 return RedirectToAction("Index");
    61             }
    62             return View(user);
    63         }
    64 
    65         public ActionResult Detail(int id = 0)
    66         {
    67             Users user = usersBll.GetUserById(id);            
    68             if (user == null)
    69             {
    70                 return HttpNotFound();
    71             }
    72             return View(user);
    73         }
    74 
    75         public ActionResult Delete(int id = 0)
    76         {
    77             Users user = usersBll.GetUserById(id);
    78             if (user == null)
    79             {
    80                 return HttpNotFound();
    81             }
    82             return View(user);
    83         }
    84         [HttpPost, ActionName("Delete")]
    85         public ActionResult DeleteConfirmed(int id)
    86         {
    87             usersBll.Delete(id);
    88             return RedirectToAction("Index");
    89         }
    90     }

    执行效果:

  • 相关阅读:
    浅析软件开发项目的前期沟通工作
    .net core 和 WPF 开发升讯威在线客服系统:实现对 IE8 的完全完美支持 【干货】
    产品的定价策略(一):想通过产品挣钱,首先你产品的目标客户得不差钱
    .net core 和 WPF 开发升讯威在线客服系统:使用线程安全的 BlockingCollection 实现高性能的数据处理
    .net core 和 WPF 开发升讯威在线客服系统:使用 TCP协议 实现稳定的客服端
    .net core 和 WPF 开发升讯威在线客服系统:使用 WebSocket 实现访客端通信
    Centos上配置两层nginx转发,把请求转发到外网
    真实字节二面:什么是伪共享?
    关于MVCC,我之前写错了,这次我改好了!
    从家庭主妇到格力老总,董明珠的大女主逆袭之路
  • 原文地址:https://www.cnblogs.com/pushudepu/p/6096811.html
Copyright © 2011-2022 走看看