1. 程式人生 > >ASP.NET MVC3.0+ JqGrid+Unit Of Work+ Repository/ EF 4.1 CRUD應用 (多層結構)

ASP.NET MVC3.0+ JqGrid+Unit Of Work+ Repository/ EF 4.1 CRUD應用 (多層結構)

ManageContacts.cs

public class ManageContacts
    {
        public IEnumerable<Contact> GetContacts()
        {
            IEnumerable<Contact> contacts;
            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                contacts = unitOfWork.ContactRepository.GetAll();
            }
            return contacts;
        }

        public bool AddContact(Contact contact)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                unitOfWork.ContactRepository.Add(contact);
                unitOfWork.Save();
            }
            return true;
        }

        public bool UpdateContact(Contact contact, int id)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                var contactEntity = unitOfWork.ContactRepository.GetById(id);
                contactEntity.Title = contact.Title;
                contactEntity.FirstName = contact.FirstName;
                contactEntity.LastName = contact.LastName;
                contactEntity.ModifiedDate = DateTime.Now;
                unitOfWork.Save();
            }
            return true;
        }

        public bool DeleteContact(int id)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                Contact contact = unitOfWork.ContactRepository.GetById(id);
                unitOfWork.ContactRepository.Delete(contact);
                unitOfWork.Save();
            }
            return true;
        }

        public List<Contact> GetContactPaged(int page, int rows, out int totalCount)
        {
            List<Contact> contacts;
            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                contacts = unitOfWork.ContactRepository.GetContactPaged
                (page, rows, out totalCount);
            }
            return contacts;
        }
        public Contact GetById(int id)
        {
            Contact contact;
            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                contact = unitOfWork.ContactRepository.GetById(id);
            }
            return contact;
        }
    }

Controller

ASP.NET MVC Controller物件的職責是傳遞資料,獲取View物件(實現了IView介面的類),通知View物件顯示.

View物件的作用是顯示.雖然顯示的方法RenderView()是由Controller呼叫的,

但是Controller僅僅是一個"指揮官"的作用, 具體的顯示邏輯仍然在View物件中

  • GridDemoData():返回Json資料給JQgrid繫結
  • PerformCRUDOperation(): 處理使用者傳遞的操作

HomeController.cs

public ActionResult GridDemoData(int page, int rows, 
    string search, string sidx, string sord)
        {
            var manageContacts = new ManageContacts();
            int currentPage = Convert.ToInt32(page) - 1;
            int totalRecords = 0;

            var data = manageContacts.GetContactPaged
        (currentPage, rows, out totalRecords);

            var totalPages = (int)Math.Ceiling(totalRecords / (float)rows);
            var jsonData = new
            {
                total = totalPages,
                page,
                records = totalRecords,

                rows = (
                           from m in data
                           select new
                           {
                               id = m.ContactID,
                               cell = new object[]
                                      {
                                           m.Title,
                                           m.FirstName,
                                           m.LastName
                                      }
                           }).ToArray()
            };
            return Json(jsonData, JsonRequestBehavior.AllowGet);
        }
        public ActionResult PerformCRUDAction(Contact contact)
        {
            var manageContacts = new ManageContacts();

            bool result = false;
            switch (Request.Form["oper"])
            {
                case "add":
                    contact.AddDate = DateTime.Now.Date;
                    contact.ModifiedDate = DateTime.Now;
                    result = manageContacts.AddContact(contact);
                    break;
                case "edit":
                    int id = Int32.Parse(Request.Form["id"]);
                    result = manageContacts.UpdateContact(contact,id);
                    break;
                case "del":
                    id = Int32.Parse(Request.Form["id"]);
                    result = manageContacts.DeleteContact(id);
                    break;
                default:
                    break;
            }
            return Json(result);
        }

View (UI Layer)

JqGrid Setup Requirements

The following code is used for JqGrid setup in site.master.

<link href="<%= ResolveUrl("~/Content/themes/flick/ui.jqgrid.css") %>" rel="stylesheet"
        type="text/css" />
Following HTML code need to be added in index.aspx for JqGrid:
<div id="myDiv" style="width: 100%">
        <table id="grid" cellpadding="0" cellspacing="0">
        </table>
        <div id="pager" name="pager" style="text-align: center;">
        </div>

    </div>

Below is the JavaScript code for JqGrid in JqGridCRUD.js.
var lastsel;
$(function () {

    $("#grid").jqGrid({
        colNames: ['Title', 'First Name', 'Last Name'],
        colModel: [
                        { name: 'Title', index: 'Title', sortable: false, 
                align: 'left', width: '200',
                            editable: true, edittype: 'text'
                        },
                        { name: 'FirstName', index: 'FirstName', sortable: false, 
                align: 'left', width: '200',
                            editable: true, edittype: 'text'
                        },
                        { name: 'LastName', index: 'LastName', sortable: false, 
                align: 'left', width: '200',
                            editable: true, edittype: 'text'
                        }
                      ],
        pager: jQuery('#pager'),
        sortname: 'FirstName',
        rowNum: 10,
        rowList: [10, 20, 25],
        sortorder: "",
        height: 225,
        viewrecords: true,
        rownumbers: true,
        caption: 'Contacts',
        imgpath: '/Content/jqGridCss/smoothness/images',
        width: 750,
        url: "/Home/GridDemoData",
        editurl: "/Home/PerformCRUDAction",
        datatype: 'json',
        mtype: 'GET',
        onCellSelect: function (rowid, iCol, aData) {

            if (rowid && rowid !== lastsel) {

                if (lastsel)
                    jQuery('#grid').jqGrid('restoreRow', lastsel);
                jQuery('#grid').jqGrid('editRow', rowid, true);
                lastsel = rowid;
            }
        }
    })
    jQuery("#grid").jqGrid('navGrid', '#pager', 
    { edit: false, add: true, del: true, search: false, refresh: true },
            { closeOnEscape: true, reloadAfterSubmit: true, 
            closeAfterEdit: true, left: 400, top: 300 },
            { closeOnEscape: true, reloadAfterSubmit: true, 
            closeAfterAdd: true, left: 450, top: 300, width: 520 },
            { closeOnEscape: true, reloadAfterSubmit: true, left: 450, top: 300 });

});

效果顯示

相關推薦

ASP.NET MVC3.0+ JqGrid+Unit Of Work+ Repository/ EF 4.1 CRUD應用 (結構)

ManageContacts.cs public class ManageContacts { public IEnumerable<Contact> GetContacts() { IEnumerable<Contact&

經典ASP NET MVC3 0入門詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ASP.NET Core 中文文件 第三章 原理(1應用程式啟動

ASP.NET Core 為你的應用程式提供了處理每個請求的完整控制。Startup 類是應用程式的入口(entry point),這個類可以設定配置(configuration)並且將應用程式將要使用的服務連線起來。開發人員可以在 Startup 類中配置請求管道,該管道將用於處理應用程式的所有請求。 章

ASP.NET Core 中文文件 第二章 指南(4.1ASP.NET Core MVC 與 Visual Studio 入門

這篇教程將告訴你如何使用 Visual Studio 2015 構建一個 ASP.NET Core MVC Web 應用程式的基礎知識。 安裝 Visual Studio 和 .NET Core 安裝 Visual Studio Community 2015。選擇 Community 下載並執行預設安裝

ABP(現代ASP.NET樣板開發框架)系列之12、ABP領域——工作單元(Unit Of work

基於DDD的現代ASP.NET開發框架--ABP系列之12、ABP領域層——工作單元(Unit Of work) ABP是“ASP.NET Boilerplate Project (ASP.NET樣板專案)”的簡稱。 通用連線和事務管理方法 連線和事務管理是使用資料庫的應用程

Asp.Net MVC3 簡單入門詳解過濾器Filter

添加 重復 權限 組件 再次 ace text ext 開發 前言 在開發大項目的時候總會有相關的AOP面向切面編程的組件,而MVC(特指:Asp.Net MVC,以下皆同)項目中不想讓MVC開發人員去關心和寫類似身份驗證,日誌,異常,行為截取等這部分重復的代碼,那我們可以

jQuery Uploadify在ASP.NET MVC3中的使用

插件 pts type ade exist on() -- ssi margin 1、Uploadify簡介 Uploadify是基於jQuery的一種上傳插件,支持多文件、帶進度條顯示上傳,在項目開發中常被使用。 Uploadify官方網址

WebApi遷移ASP.NET Core2.0

content .config true 進入 服務 設置 網關 系統 win WebApi遷移ASP.NET Core2.0 一步一步帶你做WebApi遷移ASP.NET Core2.0 隨著ASP.NET Core 2.0發布之後,原先運行在Windows II

Asp.NET Core2.0 項目實戰入門視頻課程_完整版

第5章 frame 封裝 今天 使用 結束 技巧 標題 技術分享 END OR START? 看到這個標題,你開不開心,激不激動呢? 沒錯,.net core的入門課程已經完畢了。52ABP.School項目從11月19日,第一章視頻的試錄制,到今天完整版出爐,離不開各位的

asp.net core1.x/asp.net core2.0中如何加載個配置文件

加載 自己 團隊 多配置文件 做的 ted 文章 pos 簡單 寫這篇文章,來簡單的談一下,asp.net core中,如何加載多配置文件,如有錯誤請斧正。 在1.x的時候,我們是自己配置 WebHostBuilder而在2.0的時候,ef core團隊,將配置寫到了

用VSCode開發一個asp.net core2.0+angular5項目(5): Angular5+asp.net core 2.0 web api文件上傳

owb bus sed loaded runt ace created one 做了 第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.

ABAP術語-LUW (Logical Unit of Work)

從數據 ble commit entire 工作 unit gic https view LUW (Logical Unit of Work) 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/04/1089637.h

asp.net mvc3 中,在controller中使用HttpPostedFileBase file 引數獲取上傳的檔案,檔案路徑問題

轉載:https://zhidao.baidu.com/question/444203596.html   在asp.net mvc3 中,在controller中使用HttpPostedFileBase file 引數獲取上傳的檔案,開始的時候file.filename獲取的為檔案的名稱,後來

asp.net mvc3 中,在controller中使用HttpPostedFileBase file 參數獲取上傳的文件,文件路徑問題

amp nbsp 指點 不包含 index 之前 eas www .com 轉載:https://zhidao.baidu.com/question/444203596.html 在asp.net mvc3 中,在controller中使用HttpPostedFileB

asp.net 2.0 分析器錯誤訊息: 檔案.aspx.cs”不存在錯誤

布webapplication時後老是報告分析器錯誤訊息: 檔案.aspx.cs”不存在錯誤,差點抓狂,後來在網上搜到原因是: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="{0}" Inherits="{1}" %&g

Asp.net Core2.0 快取 MemoryCache 和 Redis

    自從使用Asp.net Core2.0 以來,不停摸索,查閱資料,這方面的資料是真的少,因此,在前人的基礎上,摸索出了Asp.net Core2.0 快取 MemoryCache 和 Redis的用法,並實現了簡單的封裝 那麼,先給出幾個參考

asp.net core2.0專案部署在IIS上執行

與ASP.NET時代不同,ASP.NET Core不再是由IIS工作程序(w3wp.exe)託管,而是獨立執行的。它獨立執行在控制檯應用程式中,並通過dotnet執行時命令呼叫。它並沒有被載入到IIS工作程序中,但是IIS卻載入了名為AspNetCoreModule的

3、ASP.Net Core2.0值Filter

        Asp.Net Core的filter總共有5種,它們分別是Authorization Filter(授權過濾器)、Resource Filter(資源過濾器),Action Filter、Exception Filter(異常過濾器)和Result Filt

【翻譯】asp.net core2.0中的token認證

原文地址:https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide token認證在最近幾年正在成為一個流行的主題,特別是隨著移動應用和js應用不斷的獲得關注。像OAuth 2.0和Op

asp.net MVC3 從客戶端(&)中檢測到有潛在危險的 Request.Path 值。

A連結(url:http://localhost:56482/Sys/questionEdit/15&firstEdit=yes)開啟,發生錯誤,提示“從客戶端(&)中檢測到有潛在危險的 Request.Path 值。” 解決辦法: 步驟1、在Global檔