ASP.NET Zero--10.一个例子(3)商品分类管理-新建

1.打开Index视图

页面中添加一个按钮,代码如下:

<div class="row margin-bottom-5">
    <div class="col-xs-6">
        <div class="page-head">
            <div class="page-title">
                <h1>
                    <span>分类</span> <small>@L("CategoryManager")</small>
                </h1>
            </div>
        </div>
    </div>
    @*这里是添加的按钮代码*@
    <div class="col-xs-6 text-right">
        <button id="CreateNewCategoryButton" class="btn btn-primary blue"><i class="fa fa-plus"></i>添加分类</button>
    </div>
</div>

效果如下:

点击按钮会弹出一个模态框进行分类添加

2.模态框创建

在Category目录下新建一个视图_CreateModal.cshtml,代码如下:

@using MyCompanyName.AbpZeroTemplate.Web.Areas.Mpa.Models.Common.Modals

@Html.Partial("~/Areas/Mpa/Views/Common/Modals/_ModalHeader.cshtml", new ModalHeaderViewModel("添加分类"))
<div class="modal-body">
    <form name="CategoryForm">
        <div class="form-group form-md-line-input form-md-floating-label">
            <input class="form-control" type="text" name="Name">
            <label>名称</label>
        </div>
    </form>
</div>
@Html.Partial("~/Areas/Mpa/Views/Common/Modals/_ModalFooterWithSaveAndCancel.cshtml")

同样再新建一个js文件_CreateModal.js,代码如下:

(function ($) {

    app.modals.CreateCategoryModal = function () {
        var _categoryService = abp.services.app.category;
        var _$categoryForm = null;

        var _modalManager;
        this.init = function (modalManager) {
            _modalManager = modalManager;
            //取出Form表单
            _$categoryForm = _modalManager.getModal().find(‘form[name=CategoryForm]‘);
            };

        this.save = function () {
            //序列化参数
            var category = _$categoryForm.serializeFormToObject();
            _modalManager.setBusy(true);
            _categoryService.createCategory(
                category
            ).done(function () {
                abp.notify.info(app.localize(‘SavedSuccessfully‘));
                _modalManager.close();
                abp.event.trigger(‘app.createCategoryModalSaved‘);
            }).always(function () {
                _modalManager.setBusy(false);
            });
        };
    };
})(jQuery);

3.添加新建方法

打开ICategoryAppService文件,添加如下代码:

void CreateCategory(CreateCategoryInput input);

对应的实现类CategoryAppService,添加如下代码:

public void CreateCategory(CreateCategoryInput input)
{
       _categoryRepository.Insert(new Category()
       {
           Name = input.Name
       });
}

4.添加Dto

在Dto目录下新建一个类CreateCategoryInput.cs,代码如下:

public class CreateCategoryInput:EntityDto,IInputDto
    {
        public string Name { get; set; }
    }

5.修改Index.js

最后打开Index.js,添加代码如下:

...
var _categoryService = abp.services.app.category;

        var _createModal = new app.ModalManager({
            viewUrl: abp.appPath + ‘Mpa/Category/CreateModal‘,//加载视图
            scriptUrl: abp.appPath + ‘Areas/Mpa/Views/Category/_CreateModal.js‘,//加载对应js
            modalClass: ‘CreateCategoryModal‘
        });
...
//页面加载完执行
        getCategories();

        //添加点击事件
        $(‘#CreateNewCategoryButton‘).click(function () {
            _createModal.open();
        });

        //事件注册
        abp.event.on(‘app.createCategoryModalSaved‘, function () {
            getCategories(true);
        });

6.控制器

打开CategoryController,添加如下代码:

public ActionResult CreateModal()
{
      return PartialView("_CreateModal");
}

最后,重新生成项目,刷新页面,点击添加分类

时间: 2024-10-06 02:23:59

ASP.NET Zero--10.一个例子(3)商品分类管理-新建的相关文章

ASP.NET Zero--8.一个例子(1)菜单添加

以一个商品分类管理功能来编写,代码尽量简单易懂.从一个实体开始,一直到权限控制,由浅到深一步步对功能进行完善. 1.打开语言文件 [..\MyCompanyName.AbpZeroTemplate.Core\Localization\AbpZeroTemplate\AbpZeroTemplate-zh-CN.xml] 添加2个键值对,如下: <text name="Shop" value="商店" /> <text name="Categ

一个例子读懂 JS 异步编程: Callback / Promise / Generator / Async

JS异步编程实践理解 回顾JS异步编程方法的发展,主要有以下几种方式: Callback Promise Generator Async 需求 显示购物车商品列表的页面,用户可以勾选想要删除商品(单选或多选),点击确认删除按钮后,将已勾选的商品清除购物车,页面显示剩余商品. 为了便于本文内容阐述,假设后端没有提供一个批量删除商品的接口,所以对用户选择的商品列表,需要逐个调用删除接口. 用一个定时器代表一次接口请求.那思路就是遍历存放用户已选择商品的id数组,逐个发起删除请求del,待全部删除完成

线程间共享数据的一个例子

[申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:[email protected]] 题目:输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 题目分析: 一.如果数组中全部为负数,则返回最大负数值即可 二.当既有正数也有负数的时候: (1)从左往右叠加,如果当前叠加值小于或者等于0,则放弃,叠加总和清0(加一个负数或者0是毫无意义的),从此位置继续重新叠加 (

用一个例子读懂 RequireJS

用一个例子读懂 RequireJS 例子来自官方,我稍微改造了一下,如下: // project.html <!DOCTYPE html> <html>     <head>         <title>requirejs</title>         <!-- data-main attribute tells require.js to load              scripts/main.js after require.

用thinkphp写的一个例子:抓取网站的内容并且保存到本地

我需要写这么一个例子,到电子课本网下载一本电子书. 电子课本网的电子书,是把书的每一页当成一个图片,然后一本书就是有很多张图片,我需要批量的进行下载图片操作. 下面是代码部分: public function download() { $http = new \Org\Net\Http(); $url_pref = "http://www.dzkbw.com/books/rjb/dili/xc7s/"; $localUrl = "Public/bookcover/"

通过一个例子感受C# 6.0新特性

微软在Visual Studio 2015中更新C#语言到6.0,添加了很多很好的特性,以使C#语言继续跻身于最优秀语言之行列.下面通过一个例子快速感受一下C# 6.0的新特性,以下程序在VS2015预览版中测试通过,正式版可能还要添加新特性. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Syste

数据库连接池的一个例子

//-------------------------------------------------------------------------------- // 文件描述:数据库连接池 // 文件作者:品浩 // 创建日期:2013/5/23 // 修改记录: //-------------------------------------------------------------------------------- using System; using System.Conf

数据库自连接查询的一个例子

求其中同一个号码的两次通话之间间隔大于10秒的通话记录ID 例如:6,7,8,9,10条记录均符合 ID 主叫号码 被叫号码      通话起始时间            通话结束时间            通话时长 1  98290000 0215466546656 2007-02-01 09:49:53.000 2007-02-01 09:50:16.000 23 2  98290000 021546654666  2007-02-01 09:50:29.000 2007-02-01 09:

java8 Lambda表达式的10个例子(转)

原文:http://jobar.iteye.com/blog/2023477 Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 收藏代码//Before Java 8: new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8, too much code for too little to do");