@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
}
}

ABP增删改查代码片段的更多相关文章

  1. java DMO及增删改查代码的自动生成

    在web开发过程中,尤其是后台管理系统的开发中,少不了增删改成的基础操作,原来我自己的做法是一份一份的拷贝粘贴,然后修改其中的不同,然而这样既枯燥无味又浪费了大量的时间,所以根据自己项目结构的特点写了 ...

  2. 最简单的jsp+servlet的增删改查代码

    package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...

  3. golang学习之beego增删改查代码实现

    记录下使用beego的增删改查实现,数据库使用mysql,完整代码如下: package main import ( _ "crud_beego/routers" //自动注册路由 ...

  4. JDBC 增删改查代码 过滤查询语句

    package test; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; i ...

  5. MyBatis Generator作为maven插件自动生成增删改查代码及配置文件例子

    什么是MyBatis Generator MyBatis Generator (MBG) 是一个Mybatis的代码生成器,可以自动生成一些简单的CRUD(插入,查询,更新,删除)操作代码,model ...

  6. Java针对数据库增删改查代码

    package com.bank.abc; import java.beans.PropertyVetoException; import java.sql.Connection; import ja ...

  7. ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查

    接上一篇:ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码 1.实现UI端的增删改查 1.1添加增删改查代码 打开SimpleTaskSystem.sln解决方案,添加一个“包含视图的MV ...

  8. winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

  9. EF学习笔记——通用增删改查方案

    http://blog.csdn.net/leftfist/article/details/25005307 我刚接触EF未久,还不知道它有什么强大之处,但看上去,EF提供了一般的增删改查功能.以往用 ...

随机推荐

  1. ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解

    ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解 1.1. 名词解释 1.2. Kestrel基本工作原理 1.2.1. Kestrel的基本架构 1.2.2. Ke ...

  2. 自制STP配置实验

    本图使用Gns模拟器 实验需求: 1.要求利用vtp实现vlan同步设置 2.要求vtp server实现备份冗余 3.创建vlan 1~10要求MLSW1 是奇数vlan主根 MLSW2 是偶数vl ...

  3. a链接易混淆与form表单简易验证用法详解

    链接可以说遍布互联网,比如你想提供一个可以跳转到百度首页的链接给网友,那么代码如下: <a href="http://www.baidu.com">百度一下,你就知道& ...

  4. 【ctrl+A】与【ctrl+单击图层缩略图】有什么区别?

    如果这图层没有透明区域的话那和ctrl+A的效果是一样的! 但如果图层有不透明区域,那选中的就是图层中所有不透明的区域!

  5. 验证Oracle收集统计信息参数granularity数据分析的力度

    最近在学习Oracle的统计信息这一块,收集统计信息的方法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, ---所有者名字 tabname ...

  6. 结对编程1 —— 基于GUI和Swing的四则运算题目生成器

    合作伙伴 201421123102 王艳秋 201421123106 陈 雄 代码地址 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI( ...

  7. 201521123084 《Java程序设计》第2周学习总结

    第2周作业-Java基本语法与类库 1. 本周学习总结 1.学会使用码云管理代码: 2.学会使用Eclipse关联jdk源代码,并查看对象的源代码: 3.学会String类和StringBuilder ...

  8. Beta版本冲刺计划及安排(附七天冲刺的博客链接)

    Beta版本冲刺计划及安排(附七天冲刺的博客链接) 新增组员 本次换人加入我们团队的新成员是原"爸爸说的都队"的队长念其锋同学,经过我们小组严格的两轮面试,他从几个同样前来面试的同 ...

  9. 201521123100 《Java程序设计》第3周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...

  10. Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)

    0.几个基本概念 本地仓库:本机上某个存放代码的仓库. 远程仓库:码云服务器上的代码仓库. 重要提醒:当我们在本地操作(新增.删除.修改)文件.目录时,并将其提交(commit),就是提交到了本地仓库 ...