文档章节

ABP增删改查代码片段

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 800
阅读 15
收藏 0
@using System.Web.Optimization
@using MultiPageSimpleTask.Entitys.Dtos;
@model IList<ProductDto>
@{
    Layout = null;
    ProductDto productDto = ViewBag.SingleProduct as ProductDto;
}
<!doctype html>
<html ng-app>
<head>
    <title>Hello World</title>
    @Scripts.Render("~/Bundles/vendor/js/bottom")
    <script type="text/javascript">
        $(function () {
            //批量新增 工作单元
            $("#AddBtnbatch").click(function () {
                $.ajax({
                    type: "post",
                    url: '@Url.Action("AddProductbatch", "Home")',
                    success: function (data) {
                        //console.log(data);
                        var result = data;
                        if (result.Status) {
                            alert("新增成功");
                            //top.window.location = '/Home/Index';
                        } else {
                            alert("新增失败\n" + result.Message);
                        }
                    }
                });
            });
            $(".linkDel").click(function () {
                var pid = $(this).attr("data-pid");
                $.ajax({
                    type: "POST",
                    url: '@Url.Action("Delete", "Home")',
                    data: { "id": pid },
                    success: function (data) {
                        //console.log(data);
                        var result = data;
                        if (result.Status) {
                            alert("删除成功");
                            //top.window.location = '/Home/Index';
                        } else {
                            alert("删除失败");
                        }
                    }
                });
            });
        });
    </script>
</head>
<body>
    <a href="@Url.Action("Add","Home")" target="_blank">新增商品</a>
    <br /><br />
    <input type="button" name="AddBtnbatch" id="AddBtnbatch" value="新增多条数据(工作单元)" />
    <br /><br />

    单个商品信息 ID @productDto.Id 名称 @productDto.ProductName
    <br /><br />
    数据总数 @ViewBag.TotalCount 总共 @ViewBag.PageCount 页<br />
    <ul>
        @foreach (var Product in Model)
        {
            <li>
                <span>
                    @(string.Format("{0}-{1}", Product.Id.ToString(), Product.ProductName))
                    [<a href="@Url.Action("Update", "Home", new { id = Product.Id })" target="_blank">修改商品</a>]
                    [<a href="javascript:void(0);" class="linkDel" data-pid="@Product.Id">删除商品</a>]
                </span>
            </li>
        }
    </ul>
</body>
</html>

using System;
using System.Text;
using System.Collections.Generic;
using System.Web.Mvc;
using Abp.AutoMapper;
using Abp.Domain.Uow;
using AutoMapper;
using MultiPageSimpleTask.Entitys;
using MultiPageSimpleTask.Entitys.Dtos;


namespace MultiPageSimpleTask.Web.Controllers
{
    public class HomeController : MultiPageSimpleTaskControllerBase
    {
        private readonly StatusMsg _result = new StatusMsg();
        private readonly ICategoryRepository _categoryAppService;

        private readonly IProductRepository _productAppService;
        private readonly IUnitOfWorkManager _unitOfWorkManager;

        public HomeController(ICategoryRepository categoryAppService,
                              IProductRepository productAppService, IUnitOfWorkManager unitOfWorkManager)
        {
            _categoryAppService = categoryAppService;
            _productAppService = productAppService;
            _unitOfWorkManager = unitOfWorkManager;
        }

        #region 首页
        public ActionResult Index()
        {
            string strSql = "select productID as id,* from product"; //一定添加别名ID列,否则报错
            string orderfied = "order by ProductId ";
            int totalCount = 0;
            int pageCount = 0;
            //获取分页商品列表
            var lists = _productAppService.GetQueryPager(strSql, 2, 10, orderfied, ref totalCount, ref pageCount);
            //TODO:Used AutoMapper to automatically convert List<Product> to List<ProductDto>.
            List<ProductDto> produscts = Mapper.Map<List<ProductDto>>(lists);
            //获取某一个商品
            var product = _productAppService.Get(2);
            ViewBag.SingleProduct = Mapper.Map<ProductDto>(product);
            ViewBag.TotalCount = totalCount;
            ViewBag.PageCount = pageCount;
            return View(produscts);
        }
        #endregion

        #region 新增商品
        [HttpGet]
        public ActionResult Add()
        {
            Entitys.Product product = new Entitys.Product();
            return View(product);
        }

        [HttpPost]
        public ActionResult Add(Entitys.Product model)
        {
            _result.Status = false;
            //TODO:Convert to DTOs
            if (!ModelState.IsValid)
            {
                _result.Message = ExpendErrors(this);
            }
            else
            {
                int i = _productAppService.InsertAndGetId(model); //新增
                if (i > 0)
                {
                    _result.Status = true;
                    _result.Message = i.ToString();
                }
            }
            return new JsonResult() { Data = _result };
        }
        #endregion

        #region 修改商品

        [HttpGet]
        public ActionResult Update(int id)
        {
            var model = _productAppService.Get(id);
            return View(model);
        }

        [HttpPost]
        public ActionResult Update(Entitys.Product model)
        {
            _result.Status = false;
            //TODO:Convert to DTOs
            if (!ModelState.IsValid)
            {
                _result.Message = ExpendErrors(this);
            }
            else
            {
                var modelTarget = _productAppService.Get(model.Id); //赋值
                modelTarget.ProductName = model.ProductName; //更新字段
                modelTarget.Discontinued = model.Discontinued;
                int i = _productAppService.InsertOrUpdateAndGetId(modelTarget); //新增
                if (i > 0)
                {
                    _result.Status = true;
                    _result.Message = i.ToString();
                }
            }
            return new JsonResult() { Data = _result };
        }

        #endregion

        #region 批量新增商品
        /// <summary>
        /// 批量新增商品(启用工作单元)
        /// </summary>
        /// <returns></returns>
        public ActionResult AddProductbatch()
        {
            List<ProductInput> inputs = new List<ProductInput>();
            inputs.Add(new ProductInput
            {
                ProductName = "新增的商品222",
                SupplierID = 1,
                CategoryID = 2,
                Discontinued = true  //设置数据不符合  全部不提交
            });
            inputs.Add(new ProductInput
            {
                ProductName = "新增的商品456",
                SupplierID = 1,
                CategoryID = 2,
                Discontinued = false
            });

            _result.Status = false;
            StringBuilder builder = new StringBuilder();

            using (var unitOfWork = _unitOfWorkManager.Begin()) //启用工作单元
            {
                try
                {
                    foreach (var input in inputs)
                    {
                        //Convert to DTOs
                        var model = input.MapTo<Entitys.Product>();
                        _productAppService.InsertAndGetId(model); //新增
                    }
                    unitOfWork.Complete(); //提交事务
                }
                catch (Exception ex)
                {
                    builder.AppendLine(ex.Message);
                }
            }
            _result.Status = builder.Length == 0 ? true : false;
            _result.Message = builder.Length == 0 ? "" : builder.ToString();
            return new JsonResult() {Data = _result};
        }
        #endregion

        #region 删除商品
        /// <summary>
        /// 删除商品
        /// </summary>
        /// <param name="id">商品ID</param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Delete(int id)
        {
            _result.Status = false;
            //TODO:Convert to DTOs
            if (!ModelState.IsValid)
            {
                _result.Message = ExpendErrors(this);
            }
            else
            {
                try
                {
                    _productAppService.Delete(id); //删除
                    _result.Status = true;
                }
                catch (Exception ex)
                {
                    _result.Status = false;
                }
            }
            return new JsonResult() { Data = _result };
        }
        #endregion

        #region 返回消息类
        /// <summary>
        /// 返回信息类
        /// </summary>
        public class StatusMsg
        {
            /// <summary>
            /// 返回状态 true false
            /// </summary>
            public bool Status;
            /// <summary>
            /// 返回信息 如400、401状态码或者其它信息
            /// </summary>
            public string Message;
            /// <summary>
            /// 返回扩展信息 
            /// </summary>
            public object Result;
        }
        #endregion

        #region 获取验证信息
        public static string ExpendErrors(Controller controller)
        {
            System.Text.StringBuilder sbErrors = new System.Text.StringBuilder();
            foreach (var item in controller.ModelState.Values)
            {
                if (item.Errors.Count > 0)
                {
                    for (int i = item.Errors.Count - 1; i >= 0; i--)
                    {
                        sbErrors.AppendLine(item.Errors[i].ErrorMessage);
                    }
                }
            }
            return sbErrors.ToString();
        }
        #endregion
    }
}

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/52944560

共有 人打赏支持
深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
用abp vNext快速开发Quartz.NET定时任务管理界面

今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp.net core的快速开发框架来进行Quartz.net定时任务调度的管理界面的开发。大伙最好跟着一起敲一下代码,当然源码我会上传...

依乐祝
02/27
0
0
.com域名接口的问题

公司最近在写一个注册域名的网站,让我负责写.com的接口调用。本人看了三天英文文档,可就是不知道怎么去调用对方的接口,去连接他们的测试服务进行增删改查的操作。它的文档上面只有些代码片...

james
2015/11/04
192
5
ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十三节--RBAC模式及ABP权限管理(附赠福利)

ABP+AdminLTE+Bootstrap Table权限管理系统一期 Github:https://github.com/Jimmey-Jiang/ABP-ASP.NET-Boilerplate-Project-CMS 角色访问控制(RBAC) 角色访问控制(RBAC)应该是目前用得最...

安与生_
2017/11/05
0
0
ABP架构学习系列三:手工搭建ABP框架

  由于公司的项目才接触到ABP这个框架,当时就觉得高大上,什么IOC、AOP、ddd各种专业词汇让人激情 澎湃,但在使用过程中碰到了许多坑,可能也许是没有去看源码导致的,但工作确实没有那么...

蚊子888
2017/12/04
0
0
[Abp 源码分析]八、缓存管理

0.简介 缓存在一个业务系统中十分重要,常用的场景就是用来储存调用频率较高的数据。Abp 也提供了一套缓存机制供用户使用,在使用 Abp 框架的时候可以通过注入 来新建/设置缓存。 同时 Abp ...

myzony
2018/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据剖析热点新闻:996、巴黎圣母院、奔驰维权为什么成为本周热搜

智能大数据专家表示:每一段重要的时期都会有一串隐秘的数字密码,请往下看: 本周共有50条新闻,作为嗅嗅的样本进行数据分析,得出以下统计图: 1.新闻热词折线统计图 在新闻标题及正文中,...

forespider
22分钟前
0
0
Coding and Paper Letter(六十四)

资源整理。 1 Coding: 1.交互式瓦片编辑器。 tile playground 2.R语言包autokeras,autokeras的R接口。autokeras是一个开源的自动机器学习的软件。 autokeras 3.斯坦福网络分析平台,用于网络...

胖胖雕
59分钟前
1
0
最简单的cd命令是个大坑!

BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。 在centos6里面,系统中不存在 cd 的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 ...

gaolongquan
今天
1
0
spring获取bean的几种方式

使用jdk:1.8、maven:3.3.3 spring获取Bean的方式 pom.xml文件内容: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="......

Vincent-Duan
今天
3
0
一段话系列-Linux中IO的同步、异步、阻塞、非阻塞

首先我们框定一下背景,我们探讨的是Linux系统下的IO模型。 同步和异步是针对内核操作数据而言的,同步是指内核串行顺序操作数据,异步是指内核并行(或并发)操作数据,然后通过回调的方式通...

EasyProgramming
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部