分享

DDD领域驱动设计初探(7)(下):Web层的搭建

 weijianian 2016-08-07

来源:懒得安分

链接:http://www.cnblogs.com/landeanfen/p/4920577.html


View页面


   

   

    @Styles.Render('~/Content/css')

    @Styles.Render('~/Content/table-css')

    @Scripts.Render('~/bundles/jquery')

    @Scripts.Render('~/bundles/bootstrap')

    @Scripts.Render('~/bundles/bootstrap-table')

    @RenderSection('Scripts', false)

    @RenderBody()

@{

    ViewBag.Title = '部门管理';

    Layout = '~/Views/Shared/_Layout.cshtml';

}

@Scripts.Render('~/bundles/PowerManage/DepartmentManage')

   

       

查询条件

       

           

               

                   

                   

                       

                   

               

               

                   

                   

                       

                   

               

               

                   

               

           

       

   

   

   

   

   

       

           

               

                   

                   

新增

               

               

 

                   

                       

                       

                   

                   

                       

                       

                   

                   

                       

                       

                   

                   

                       

                       

                   

               

               

                   

                   

               

           

       

   


JS代码我们来看一个页面就好了,其他页面类似:


$(function () {

    $('#tb_departments').bootstrapTable({

        url: '/PowerManager/GetDepartments',

        method: 'post',

        toolbar: '#toolbar',

        pagination: true,

        queryParams: queryParams,

        queryParamsType: 'limit',

        sidePagination: 'server',

        pageSize: 5,

        pageList: [5, 25, 50, 100],

        search: true,

        strictSearch: true,

        showColumns: true,

        showRefresh: true,

        minimumCountColumns: 2,

        clickToSelect: true,

        columns: [{

            checkbox: true

        }, {

            field: 'DEPARTMENT_NAME',

            title: '部门名称'

        }, {

            field: 'PARENT_ID',

            title: '上级部门'

        }, {

            field: 'DEPARTMENT_LEVEL',

            title: '部门级别'

        }, {

            field: 'STATUS',

            title: '状态'

        }, ],

        onLoadSuccess: function (data) {

            var odata = data;

        }

    });

 

    var oButtonInit = new ButtonInit();

    oButtonInit.Init();

 

});

 

function queryParams(params) {  

//配置参数

    var temp = {   

//这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的

        limit: params.limit,   

//页面大小

        offset: params.offset,  

//页码

        departmentname: $('#txt_search_departmentname').val(),

        statu: $('#txt_search_statu').val()

    };

    return temp;

}

var ButtonInit = function () {

    var oInit = new Object();

    var postdata = {};

    oInit.Init = function () {

        $('#btn_add').click(function () {

            $('#myModalLabel').text('新增');

            $('#myModal').find('.form-control').val('');

            $('#myModal').modal()

            postdata.DEPARTMENT_ID = '';

        });

        $('#btn_edit').click(function () {

            var arrselections = $('#tb_departments').bootstrapTable('getSelections');

            if (arrselections.length > 1) {

//alert('只能选择一行进行编辑');

                $('#btn_alert').alert();

                return;

            }

            if (arrselections.length <= 0)="">

//alert('请先选择需要编辑的行');

                $('#btn_alert').alert()

                return;

            }

            $('#myModalLabel').text('编辑');

            $('#txt_departmentname').val(arrselections[0].DEPARTMENT_NAME);

            $('#txt_parentdepartment').val(arrselections[0].PARENT_ID);

            $('#txt_departmentlevel').val(arrselections[0].DEPARTMENT_LEVEL);

            $('#txt_statu').val(arrselections[0].STATUS);

            postdata.DEPARTMENT_ID = arrselections[0].DEPARTMENT_ID;

            $('#myModal').modal();

        });

        $('#btn_delete').click(function () {

            var arrselections = $('#tb_departments').bootstrapTable('getSelections');

            if (arrselections.length <= 0)="">

//alert('请先选择需要编辑的行');

                $('#btn_alert').alert()

                return;

            }

            if (!confirm('确定要删除选定的数据吗?')) {

                return;

            }

            $.ajax({

                type: 'post',

                url: '/PowerManager/DeleteDept',

                data: { strID: arrselections[0].DEPARTMENT_ID },

                success: function (data, status) {

                    if (status == 'success') {

                        alert('提交数据成功');

                        $('#tb_departments').bootstrapTable('refresh');

                    }

                },

                error: function () {

                    alert('error');

                },

                complete: function () {

                }

            });

        });

        $('#btn_submit').click(function () {

            postdata.DEPARTMENT_NAME = $('#txt_departmentname').val();

            postdata.PARENT_ID = $('#txt_parentdepartment').val();

            postdata.DEPARTMENT_LEVEL = $('#txt_departmentlevel').val();

            postdata.STATUS = $('#txt_statu').val();

            $.ajax({

                type: 'post',

                url: '/PowerManager/GetDepartmentEdit',

                data: { strPostData: JSON.stringify(postdata) },

                success: function (data, status) {

                    if (status == 'success') {

                        alert('提交数据成功');

                        $('#tb_departments').bootstrapTable('refresh');

                    }

                },

                error: function () {

                },

                complete: function () {

                }

            });

        });

        $('#btn_query').click(function () {

            $('#tb_departments').bootstrapTable('refresh');

        });

    };

    return oInit;

};


效果图:


在做页面数据更新的时候,博主又遇到一个问题:ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。在此还是记录下解决方案:


在仓储的公共实现类中将


public virtual IQueryable Entities

{

   get { return UnitOfWork.context.Set(); }

}


改成


public virtual IQueryable Entities

{

  get { return UnitOfWork.context.Set().AsNoTracking() as IQueryable; }

}


就可以了。


至此,从领域模型到Web前端的代码基本完成,可能很多代码并未完善,比如异常处理、数据验证等。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多