欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)

程序员文章站 2022-06-07 10:46:19
从篇 abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八) 至abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理三 (二十一) 为止,我们已经通过EasyUI完成了货物信息管理的前端与后台功能。现在... ......

abp(net core)+easyui+efcore实现仓储管理系统目录

abp(net core)+easyui+efcore实现仓储管理系统——abp总体介绍(一)

abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二)

abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)

 abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四)

abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之控制器(六)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九)

abp(net core)+easyui+efcore实现仓储管理系统——多语言(十)

abp(net core)+easyui+efcore实现仓储管理系统——使用 webapi实现curd (十一)

abp(net core)+easyui+efcore实现仓储管理系统——菜单-上 (十六)

 abp(net core)+easyui+efcore实现仓储管理系统——菜单-下(十七) 

abp(net core)+easyui+efcore实现仓储管理系统——easyui前端页面框架 (十八)

abp(net core)+easyui+efcore实现仓储管理系统——easyui之货物管理一 (十九)

 abp(net core)+easyui+efcore实现仓储管理系统——easyui之货物管理二 (二十)

abp(net core)+easyui+efcore实现仓储管理系统——easyui之货物管理三 (二十一)

 

      从篇 abp(net core)+easyui+efcore实现仓储管理系统——easyui前端页面框架 (十八) abp(net core)+easyui+efcore实现仓储管理系统——easyui之货物管理三 (二十一) 为止,我们已经通过easyui完成了货物信息管理的前端与后台功能。现在我们运行起应用程序实测一下。

十一、浏览货物管理页面

    1.在visual studio 2017中按f5运行应用程序。

    2.在浏览器中的地址栏中输入“http://localhost:5000/”,然后输入管理员用户名进行登录。

    3.在主界面的菜单中,选择“business->货物管理”菜单项,浏览器中呈现一个货物信息列表与四个按钮。如下图。关于菜单的生成可以参见文章(与 )。 abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)

     4.数据库中有数据,却没有显示。我们在浏览器中按f12,查看一下返回的是什么结果?如下图。返回结果被abp封装了一下。

 abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)

我们来看上图中红框所标示的结果中可以看出,其中result为代码中指定返回的数据。其他几个键值对是abp封装的,包含了是否认证、是否成功、错误信息,以及目标url。

    5.我们不需要abp对json进行封装怎么办?很简单。只需要在方法上标记[dontwrapresult]特性即可。这个特性其实是一个快捷方式用来告诉abp不要用abpjsonresult对我们的结果进行封装。

    6. 在visual studio 2017的“解决方案资源管理器”中,右键单击在领域层“abp.tplms.web.mvc”项目中的controller目录。 找到cargocontroller文件,在list方法上添加[dontwrapresult]特性。

    7. 在visual studio 2017中按f5运行应用程序。登录之后,点击“[货物管理]”菜单,我们可以看到货物管理列表页面。abp是不再对json结果进行封装,界面中也能显示记录行了,但是记录行中没有数据。如下图。

 abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)

 

十二、创建jsonhelper辅助类

       我们在之前的测试货物信息管理功能时,看到货物管理列表页面中只显示了记录行,没有显示相关的数据。接下来我们来解决这个问题,我们需要一个j son的辅助类。

     1. 在visual studio 2017的“解决方案资源管理器”中,右键单击在领域层“abp.tplms.web.core”项目,选择“添加” > “新建文件夹”。并重命名为“helpers”。

      2. 在visual studio 2017的“解决方案资源管理器”中,鼠标右键单击“helpers”文件夹,然后选择“添加” > “类…”。 在“添加新项-abp.tplms.web.core”对话框中,选择“类”,并将名称命名为jsonheplerl。

    3. 在我们刚才创建的jsonheplerl文件中,编写如下代码:

using newtonsoft.json;
using newtonsoft.json.converters;
using system;
using system.collections.generic;
using system.text; 

namespace abp.tplms.helpers
{
        public class jsonhelper
        {
            private static jsonhelper _jsonhelper = new jsonhelper();
            public static jsonhelper instance { get { return _jsonhelper; } }

            public string serialize(object obj)
            {
                return jsonconvert.serializeobject(obj, new isodatetimeconverter { datetimeformat = "yyyy-mm-dd hh:mm:ss" });

            } 

            public string serializebyconverter(object obj, params jsonconverter[] converters)
            {
                return jsonconvert.serializeobject(obj, converters);

            } 

            public t deserialize<t>(string input)
            {
                return jsonconvert.deserializeobject<t>(input);

            } 

            public t deserializebyconverter<t>(string input, params jsonconverter[] converter)
            {
                return jsonconvert.deserializeobject<t>(input, converter);

            }
 

            public t deserializebysetting<t>(string input, jsonserializersettings settings)
            {
                return jsonconvert.deserializeobject<t>(input, settings);

            }

            private object nulltoempty(object obj)
            {
                return null;
            }

        }
}

 

十三、修改cargocontroller与tplmscontrollerbase

我们对(abp(net core)+easyui+efcore实现仓储管理系统——easyui之货物管理二 (二十) )文中所写方法jsoneasyui进行改造。

      1. 在visual studio 2017的“解决方案资源管理器”中,右键单击在领域层“abp.tplms.web.core”项目中的controller目录。 找到tplmscontrollerbase文件,中的jsoneasyui方法,更新其中的代码。代码如下。

protected dynamic jsoneasyui(dynamic t,int total)
 {         

     var obj= new
    {
        total = total,
        rows = t
    };
    var json = abp.tplms.helpers.jsonhelper.instance.serialize(obj);
    return json;
 }

      2. 在visual studio 2017的“解决方案资源管理器”中,右键单击在领域层“abp.tplms.web.mvc”项目中的controller目录。 找到cargocontroller.cs文件,修改list方法,如下代码。

[dontwrapresult]
public string list()
 {

     var page = request.form["page"].tostring();
     var size = request.form["rows"].tostring();
     int pageindex = page == null ? 1 : int.parse(page);
     int pagesize = size == null ? 20 : int.parse(size);
     pagedcargoresultrequestdto paged = new pagedcargoresultrequestdto();
     paged.maxresultcount = pagesize;
     paged.skipcount = ((pageindex-1)<0?0: pageindex - 1) * pagesize; 

     var userlist = _cargoappservice.getall(paged).getawaiter().getresult().items;

     int total = 1000;
     var json = jsoneasyui(userlist,total);
     return json;

}

       3. 在visual studio 2017中按f5运行应用程序。登录之后,点击“[货物管理]”菜单,我们可以看到货物管理列表页面。如下图。

 abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)

      4.我们在浏览器中按f12,查看一下返回的是什么结果?如下图。返回结果没有被abp封装。

 abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)