接上一篇:ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码

1.实现UI端的增删改查

1.1添加增删改查代码

打开SimpleTaskSystem.sln解决方案,添加一个“包含视图的MVC 5控制器(使用EntityFramework)”TaskController控制器,添加成功后我们就能得到一个完整增删改查的功能了。

生成的代码是不能用在我们的这个示例里的,还需经过些许调整,经过调整后的代码如下:

using System;
using System.Net;
using System.Web.Mvc;
using SimpleTaskSystem.Services;namespace SimpleTaskSystem.Web.Controllers
{public class TaskController : SimpleTaskSystemControllerBase{private readonly ITaskAppService _taskService;public TaskController(ITaskAppService taskService){_taskService = taskService;}// GET: Taskpublic ActionResult Index(GetTasksInput input){var tasks = _taskService.GetTasks(input);return View(tasks);}// GET: Task/Details/5public ActionResult Details(long? id){if (id == null){return new HttpStatusCodeResult(HttpStatusCode.BadRequest);}var task = _taskService.GetTask(id.Value);if (task == null){return HttpNotFound();}return View(task);}// GET: Task/Createpublic ActionResult Create(){return View();}// POST: Task/Create[HttpPost][ValidateAntiForgeryToken]public ActionResult Create(CreateTaskInput input){if (ModelState.IsValid){_taskService.CreateTask(input);return RedirectToAction("Index");}return View(input);}// GET: Task/Edit/5public ActionResult Edit(long? id){if (id == null){return new HttpStatusCodeResult(HttpStatusCode.BadRequest);}var task = _taskService.GetTask(id.Value);if (task == null){return HttpNotFound();}return View(task);}// POST: Task/Edit/5[HttpPost][ValidateAntiForgeryToken]public ActionResult Edit(TaskDto dto){if (ModelState.IsValid){var input = new UpdateTaskInput();input.Id = dto.Id;input.Description = dto.Description;_taskService.UpdateTask(input);return RedirectToAction("Index");}return View(dto);}// GET: Task/Delete/5public ActionResult Delete(long? id){if (id == null){return new HttpStatusCodeResult(HttpStatusCode.BadRequest);}var task = _taskService.GetTask(id.Value);if (task == null){return HttpNotFound();}return View(task);}// POST: Task/Delete/5[HttpPost, ActionName("Delete")][ValidateAntiForgeryToken]public ActionResult DeleteConfirmed(long id){throw new Exception("请大家自行实现该方法!");}}
}

1.2.依次调整Views/Task下面的.cshtml文件

Index.cshtml

@model SimpleTaskSystem.Services.GetTasksOutput@{ViewBag.Title = "Index";
}<h2>任务列表</h2><p>@Html.ActionLink("Create New", "Create")
</p>
<table class="table"><tr><th>任务描述</th><th></th></tr>
@foreach (var item in Model.Tasks) {<tr><td>@Html.DisplayFor(modelItem => item.Description)</td><td>@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |@Html.ActionLink("Details", "Details", new { id=item.Id }) |@Html.ActionLink("Delete", "Delete", new { id=item.Id })</td></tr>
}
</table>

Create.cshtml

@model SimpleTaskSystem.Services.CreateTaskInput@{ViewBag.Title = "Create";
}<h2>Create</h2>@using (Html.BeginForm())
{@Html.AntiForgeryToken()<div class="form-horizontal"><h4>TaskDto</h4><hr />@Html.ValidationSummary(true, "", new { @class = "text-danger" })<div class="form-group">@Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })</div></div><div class="form-group"><div class="col-md-offset-2 col-md-10"><input type="submit" value="Create" class="btn btn-default" /></div></div></div>
}<div>@Html.ActionLink("Back to List", "Index")
</div>

Edit.cshtml

@model SimpleTaskSystem.Services.TaskDto@{ViewBag.Title = "Edit";
}<h2>Edit</h2>@using (Html.BeginForm())
{@Html.AntiForgeryToken()<div class="form-horizontal"><h4>TaskDto</h4><hr />@Html.ValidationSummary(true, "", new { @class = "text-danger" })@Html.HiddenFor(model => model.Id)<div class="form-group">@Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })</div></div>@*<div class="form-group">@Html.LabelFor(model => model.AssignedUserId, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.AssignedUserId, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => model.AssignedUserId, "", new { @class = "text-danger" })</div></div><div class="form-group">@Html.LabelFor(model => model.State, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.State, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" })</div></div>*@<div class="form-group"><div class="col-md-offset-2 col-md-10"><input type="submit" value="Save" class="btn btn-default" /></div></div></div>
}<div>@Html.ActionLink("Back to List", "Index")
</div>

Details.cshtml

@model SimpleTaskSystem.Services.TaskDto@{ViewBag.Title = "Details";
}<h2>Details</h2><div><h4>TaskDto</h4><hr /><dl class="dl-horizontal"><dt>@Html.DisplayNameFor(model => model.Description)</dt><dd>@Html.DisplayFor(model => model.Description)</dd><dt>@Html.DisplayNameFor(model => model.AssignedUserId)</dt><dd>@Html.DisplayFor(model => model.AssignedUserId)</dd><dt>@Html.DisplayNameFor(model => model.State)</dt><dd>@Html.DisplayFor(model => model.State)</dd></dl>
</div>
<p>@Html.ActionLink("Edit", "Edit", new { id = Model.Id }) |@Html.ActionLink("Back to List", "Index")
</p>

1.3.导航栏增加【任务管理】菜单

打开App_Start/SimpleTaskSystemNavigationProvider.cs文件添加菜单

using Abp.Application.Navigation;
using Abp.Localization;namespace SimpleTaskSystem.Web
{/// <summary>/// This class defines menus for the application./// It uses ABP's menu system./// When you add menu items here, they are automatically appear in angular application./// See .cshtml and .js files under App/Main/views/layout/header to know how to render menu./// </summary>public class SimpleTaskSystemNavigationProvider : NavigationProvider{public override void SetNavigation(INavigationProviderContext context){context.Manager.MainMenu.AddItem(new MenuItemDefinition("Home",new LocalizableString("HomePage", SimpleTaskSystemConsts.LocalizationSourceName),url: "#/",icon: "fa fa-home")).AddItem(new MenuItemDefinition("About",new LocalizableString("About", SimpleTaskSystemConsts.LocalizationSourceName),url: "#/about",icon: "fa fa-info")).AddItem(new MenuItemDefinition("About",new LocalizableString("Task Manage", SimpleTaskSystemConsts.LocalizationSourceName),url: "/task/"));}}
}

2.浏览器中测试

刷新浏览器,进行增删改查测试。

3.本节源码下载

相对前一节的代码,本节代码除上面的代码外还有些许调整,请大家在这里下载完整版源码:http://pan.baidu.com/s/1c2n2U7Q

Abp基础的部分我们已经学习完了,到这你应该学会了使用Abp进行基本的增删改查,后面我们会通过项目实战的方式来讲解Abp其它功能的用法,请大家继续关注www.webplus.org.cn

转载于:https://www.cnblogs.com/webplus/p/5849965.html

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

  1. 什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查

     1 什么是Pro*C/C++ 1.通过在过程编程语言C/C++中嵌入SQL语句而开发出的应用程序 2.什么是嵌入式SQL 1.在通用编程语言中使用的SQL称为嵌入式SQL 2.在SQL标准中定义 ...

  2. python制作一个密码簿_[python]制作密码薄,完成增删改查和文件存储功能。

    题目: 1)用文本编辑器编写一个密码簿文本文件,每一行格式为:姓名,密码 2)编写Python代码,提示:输入文件名,输入文件名后提示:查找,增加,删除,修改,保存 3)选择查找,输入姓名,提示&qu ...

  3. mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数

    mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...

  4. C# 使用自定义类+字典+JSON填充数据,脱离真实数据库,实现简单的增删改查和本地存储与读取数据

    前言 这个文章将不会用到数据库,另辟蹊径去实现本地的存储与读取,增删改查!~ 之前写项目用到的思路,因为是非常小的项目,不想依赖数据库来增删改查,以此避免复杂的数据库环境支持和安装.之前想上网查找有没 ...

  5. 使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)

    最近也是临近期末了,各种的期末大作业,后台管理也是很多地方需要用到的,为了方便大家能快速上手,快速搭建一个简单的后台管理,我花了两天时间整理了一下 我会从0开始介绍,从数据库的设计到前端页面的引入最后 ...

  6. SQLite 入门教程(四)增删改查,有讲究

    增删改查操作,其中增删改操作被称为数据操作语言 DML,相对来说简单一点. 查操作相对来说复杂一点,涉及到很多子句,所以这篇先讲增删改操作,以例子为主,后面再讲查操作. 一.插入数据 INSERT I ...

  7. 创建一个简单的后台教务管理系统,包含动态增删改查学生,年级和课程信息及查看登录日志等功能,包含表单验证.

    创建一个简单的后台教务管理系统,包含动态增删改查学生,年级和课程信息及查看登录日志等功能,包含表单验证. 一.显示页面 新建一个登录页面,即login.jsp <%--Created by In ...

  8. Struts2 注解开发实现简单的增删改查,超详细教程

    声明:此文是原创,如果需要转载请注明出处:https://blog.csdn.net/hunter_max/article/details/80575542 上一篇博客<Struts2 注解开发 ...

  9. 用C#实现一个简单的图书管理系统(课程设计)

    用C#(sharp)实现一个简单的图书管理系统(课程设计) 学校的数据库课程结束了,要求完成一个课程设计,于是我用C#实现了一个简单的图书管理系统(ADO.NET) 源码放在了github上,仅供参考 ...

  10. 使用JDBC技术完成一个简单的账务管理系统

    一:账务系统的大致组成: 简单来说包括app层,controller层,dao层,domain层,service层,tools层,view层. 我的运行环境是:java version "1 ...

最新文章

  1. 登高自卑 | 我的NumPy笔记
  2. GetMessage和PeekMessage的区别
  3. VTK:可视化算法之LOxGrid
  4. php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?
  5. 信息学奥赛一本通(1048:有一门课不及格的学生)
  6. servlet-cookie实现向客户端写cookie信息
  7. tcpdump/editcap等工具保存文件时名称中自定义添加日期/时间
  8. 【Pre蓝桥杯嵌入式】移植LCD程序+建立工程+LCD程序分析
  9. gdb java,调用gdb来调试java程序
  10. Html5新特性 canvas画板画直线和等比缩放居中裁剪图片
  11. 如何安装Vmware ESXi 6.7(图文介绍)
  12. php+ctypt+api,RSA-OAEP SHA-512 Encrypt / Decrypt from Javascriptwebcrypt api to PHP openssl?
  13. ubuntu20.04 合并两个磁盘
  14. 2022考研:数学考研备考规划
  15. 悦听player音乐播放器
  16. linux请求超时 ping_linux下ping命令使用详解
  17. 精品微信小程序校园第二课堂在线学习网+后台系统|前后分离VUE
  18. Google搜索时如何在新标签页打开搜索结果
  19. 数据分析----BCG模型(波士顿矩阵分析)
  20. The APK file does not exist on disk

热门文章

  1. 公关营销策划书的要点及分析
  2. 五分钟看懂vue路由守卫
  3. 《宽带与接入网技术》第四章 以太网接入技术
  4. java实现通讯录(手机版)
  5. unity3d:粒子随摄像机远近有大小变化bug
  6. android fsck,android fsck_msdos分析(一)
  7. CQF笔记Primer金融基础
  8. 基于存储卡的音乐播放器0.6
  9. linux下nohup后台运行RSSHub等nodejs项目,开启与关闭
  10. 普元:解读歼-20背后的国家安全重要领域信息化跨越