ABP 初探 之基于EasyUI的CU中华VD

View Code

  对应的类名:AbpWebApiModule

View Code

图片 1

  源码下载 

#region 获取列表
        public JsonResult Get()
        {
            var provider = new EasyUIProvider();
            var pager = provider.GetPager(Request);
            var filter = new GetUserInput();
            if (!string.IsNullOrEmpty(pager.Filter))
            {
                filter = provider.DeserializeObject<GetUserInput>(pager.Filter);
            }
            filter.PageSize = pager.PageSize;
            filter.CurrentPage = pager.CurrentPage - 1;
            filter.SortOrder = pager.SortOrder;
            filter.SortCloumnName = pager.SortCloumnName;
            var grid = _userApplicationService.GetUser(filter);
            return Json(grid);
        }
        #endregion

图片 2图片 3

  ABP 源代码地址 https://github.com/aspnetboilerplate 

安装 V.Market.Web 为运维项目

至于批量操作,一般景观下每页展现20~50条数据,不难的批量剔除基本得以满意,如若需操作大量数目建议选择储存进程,修改、添加不在介绍,具体达成请参考源代码

View Code

花色布局如下

  ABP的为主介绍就不讲了它是基于.net
4.5.1的,下载文书档案后本身打听呢,以往只讲解怎么用了

图片 4

 

修改 web.config 的连年字符串

$.ajax({
                url: VE.AppPath + url,
                type: 'post',
                contentType: 'application/json',
                data: JSON.stringify({ Id: VE.Ids.join(','), IsActive: active }),
                dataType: 'json',
                success: function (r) {
                    if (r.Success) {
                        VE.MessageShow("操作成功");
                        VE.GridJudge(gridId, isLoad, gridType);
                    } else {
                        if (r.Error.Code == 0) {
                            $.messager.alert('提示', r.Error.Message, "error");
                        }
                        else if (r.Error.Code == 1) {
                            $.messager.alert('提示', r.Error.Message, "info");
                        }
                        else if (r.Error.Code == 2) {
                            $.messager.alert('提示', r.Error.Message, "warn");
                        } else {
                            $.messager.alert('提示', r.Error.Message, "error");
                        }
                    }
                }
            });
private static void InitializeFormatters()
        {
            GlobalConfiguration.Configuration.Formatters.Clear();
            var formatter = new JsonMediaTypeFormatter();
            formatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
            formatter.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
            GlobalConfiguration.Configuration.Formatters.Add(formatter);
            GlobalConfiguration.Configuration.Formatters.Add(new PlainTextFormatter());
        }
function GridInit() {
        //VE.LoodToolbar(); //加载权限
        datagrid = $("#datagrid").datagrid({
            url: VE.AppPath + '/User/Get',
            title: '用户信息',
            rownumbers: true,
            pagination: true,
            iconCls: VE.DatagridIconCls,
            height: VE.GridHeight,
            pageSize: VE.PageSize,
            pageList: VE.PageList,
            ctrlSelect:true,
            fitColumns: true,
            nowrap: false,
            border: true,
            idField: 'Id',
            sortName: 'Id',
            sortOrder: 'desc',
            columns: [[
                { field: 'ck', checkbox: true },
                { field: 'Id', title: 'Id', width: 80, sortable: true, hidden: true },
                { field: 'UserName', title: '用户名', width: 100, sortable: true },
                { field: 'Surname', title: '姓', width: 60, sortable: true },
                { field: 'Name', title: '名', sortable: true },
                { field: 'EmailAddress', title: '邮箱', sortable: true },
                { field: 'CreationTime', title: '创建时间', width: 140, sortable: true },
                { field: 'CreatorUserName', title: '创建人', width: 100, sortable: true },
                { field: 'LastModifierUserName', title: '最后更新人', width: 100, sortable: true },
                { field: 'LastModificationTime', title: '最后更新时间', width: 140, sortable: true, formatter: VE.FormatterDateTime },
                { field: 'IsActive', title: '状态', width: 45, sortable: true, formatter: VE.FormatterActive }
            ]],
            toolbar: [{
                iconCls: 'icon-add',
                text: '新增',
                handler: function () {
                    id = 0;
                    Save()
                }
            }, '-', {
                iconCls: 'icon-edit',
                text: '编辑',
                handler: function () {
                    id = VE.Edit("datagrid", VE.GridType_DataGrid)
                    if (id > 0) {
                        Save();
                    }
                }
            }, '-', {
                iconCls: 'icon-busy',
                text: '删除',
                handler: function () {
                    Delete();
                }
            }, '-', {
                iconCls: 'icon-unlock',
                text: '启用',
                handler: function () {
                    Active(true)
                }
            }, '-', {
                iconCls: 'icon-lock',
                text: '禁用',
                handler: function () {
                    Active(false)
                }
            }]
        });
    }

  公司的品种是基于Easyui的,由此德姆o也是基于EasyUI的,ABP的重临值不可能知足Easyui的datagrid请求与凸显,对Abp源码进行了部分修改,才能符合规律使用,具体修改会一一列出,给急需的心上人或多或少相助。

 JS 请求调用代码

修改生成的数额 abpuser表  的 TenantId 修改成1 

public EasyUIPager GetPager(HttpRequestBase currentRequest)
        {
            EasyUIPager pager = new EasyUIPager();
            if (currentRequest.Form["page"] != null)
            {
                pager.CurrentPage = int.Parse(currentRequest.Form["page"]);
            }
            if (currentRequest.Form["rows"] != null)
            {
                pager.PageSize = int.Parse(currentRequest.Form["rows"]);
            }
            pager.SortCloumnName = currentRequest.Form["sort"];
            pager.SortOrder = currentRequest.Form["order"];
            pager.Filter = currentRequest.Form["filter"];
            return pager;
        }

成效图如下

  截至了随时加班的门类,项目即使甘休,但还是有点小标题,只万幸后期优化个中完结了,这次做项目利用了,MVC、Webapi、Entityframework,在园了里看看了有关ABP的牵线,同样ABP也是最新技术集合,就加盟了 ABP架构划设想计交换群
134710707,一起探索、学习与升高。

  Easyui的Datagrid请求是因此U揽胜L传参数的,近年来ABP不援救那种拍卖方法,因而不得不协调在Controller里面写方法了,不能够调用自动生成的WebAPi,多了一个步骤,上边是协会的分页类

EasyUI对应代码

图片 5

对 UserFriendlyException 的拍卖进展了改动,依照不相同的那多少个弹出不一致的提醒框

透过命令生成数据库 update-database (需运转三遍才能把多少写到数据库)

View Code

  ABP的乞请值重回的靶子属性首字母小写,这是因为暗中认可的Json格式是 CamelCasePropertyNamesContractResolver
 ,只要把相关代码修改为 

 图片 6

图片 7图片 8

<add name=”Default” connectionString=”data source=.;initial catalog=Market;persist security
info=True;user id=sa;password=Password!;MultipleActiveResultSets=True;App=EntityFramework

providerName=”System.Data.SqlClient” />

 public async Task Delete(BatchDeleteRequestInput input)
        {
            for (int i = 0; i < input.Id.Split(',').Length; i++)
            {
                await _userRepository.DeleteAsync(Convert.ToInt64(input.Id.Split(',')[i]));
            }
            await _unitOfWorkManager.Current.SaveChangesAsync();
        }
public UserFriendlyException(string message, UserFriendlyExceptionCode code)
            : base(message)
        {

            if (code == UserFriendlyExceptionCode.Info)
            {
                Code = 1;
            }
            else if (code == UserFriendlyExceptionCode.Warn)
            {
                Code = 2;
            }
            else
            {
                Code = 0;
            }
        }

MVC Controller代码

图片 9

部分园友没学习过EntityFramework,不知怎么样变化数据库,下介绍数据库的变更方法

图片 10图片 11

图片 12

图片 13图片 14

图片 15

 

  大家都喜欢源代码,F5一向运营,因而就写了个demo供大家参考

 关于创立人与最后更新人,ABP的拍卖相比较好,只须要经过炫耀就足以了,不须要写多余的子查询,具体原理还没查看源代码,等了然后再详解

出于上传代码时,忘记修改登录的用户名了,因而需修改 HomeController的
登录用户名为 Admin

  ABP的技巧文书档案全是英文材质,不过今后不要顾虑了,群里的热情朋友已翻译成能看的懂语言了,详情