·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 通过实例学习Fireasy开发(补充)

通过实例学习Fireasy开发(补充)

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

通过实例学习Fireasy开发(补充)

本文目录

通过实例学习Fireasy开发(上篇)

通过实例学习Fireasy开发(中篇)

通过实例学习Fireasy开发(下篇)

通过实例学习Fireasy开发(补充/示例代码下载)

前面的功能已经开发完成了,但是这里专门用一章来进行补充。

一、EasyUI验证

不知道你有没有发现,我们虽然在EmployeeMetada里加了验证特性RequiredAttribute、StringLengthAttribute,但是页面并没有在data-options里生成validType。

在global.asax的application_Start方法里,加入以下的代码:

        PRotected void Application_Start(object sender, EventArgs e)        {            //资源打包配置            BundleHelper.Config();            //默认是使用MEF导出服务的,改成使用aspx对应的类文件作为服务            HttpConfiguration.Default.ServiceFactory = new AspPageServiceFactory();            //配置http服务的路由,依子目录的级数而定            HttpConfiguration.MapHttpRoute("{service}.ajx/{action}");            HttpConfiguration.MapHttpRoute("{p1}/{service}.ajx/{action}");            HttpConfiguration.MapHttpRoute("{p1}/{p2}/{service}.ajx/{action}");            HttpConfiguration.MapHttpRoute("{p1}/{p2}/{p3}/{service}.ajx/{action}");            SettingsBindManager.RegisterBinder("validatebox", new ValidateBoxSettingBinder());            SettingsBindManager.RegisterBinder("numberbox", new NumberBoxSettingBinder());        }

为了达到效果,我们修改一下WebApplication1.Data项目下的EmployeeMetadata类(在Employee_Ex.cs文件内),为Mobile加上手机验证,为Name、Post、Sex和Birthday加上必填验证。

    public class EmployeeMetadata    {                /// <summary>        /// 属性 Id 的验证特性。        /// </summary>                [Required]        [StringLength(36)]        public object Id { get; set; }        /// <summary>        /// 属性 DeptId 的验证特性。        /// </summary>                [Required]        [StringLength(36)]        public object DeptId { get; set; }        /// <summary>        /// 属性 No 的验证特性。        /// </summary>                [StringLength(20)]        public object No { get; set; }        /// <summary>        /// 属性 Sex 的验证特性。        /// </summary>                [Required]        public object Sex { get; set; }        /// <summary>        /// 属性 Name 的验证特性。        /// </summary>                [Required]        [StringLength(20)]        public object Name { get; set; }        /// <summary>        /// 属性 Birthday 的验证特性。        /// </summary>                [Required]        public object Birthday { get; set; }        /// <summary>        /// 属性 Post 的验证特性。        /// </summary>                [Required]        public object Post { get; set; }        /// <summary>        /// 属性 Mobile 的验证特性。        /// </summary>                [Fireasy.Data.Validation.Mobile]        [StringLength(20)]        public object Mobile { get; set; }        /// <summary>        /// 属性 Address 的验证特性。        /// </summary>                [StringLength(100)]        public object Address { get; set; }        /// <summary>        /// 属性 Description 的验证特性。        /// </summary>                [StringLength(500)]        public object Description { get; set; }        /// <summary>        /// 属性 State 的验证特性。        /// </summary>                public object State { get; set; }        /// <summary>        /// 属性 DelFlag 的验证特性。        /// </summary>                public object DelFlag { get; set; }        /// <summary>        /// 属性 Photo 的验证特性。        /// </summary>                [StringLength(200)]        public object Photo { get; set; }    }

好了,我们现在来看看EmployeeEdit.aspx有表单有没有加上数据验证:

二、数据列表的排序

datagrid的columns中,我们默认生成了sortable属性,但是后台代码中并没有使用排序。其实代码是生成了的,只需将注释行Order(sorting)取消就要以了。

        /// <summary>        /// 根据查询条件获取员工。        /// </summary>        /// <param name="deptNo">部门编码。</param>        /// <param name="startTime">开始日期。</param>        /// <param name="endTime">结束时间。</param>        /// <param name="post">岗位类别。</param>        /// <param name="keyWord">关键字</param>        /// <returns></returns>        [ExceptionBehavior(true)]        public object GetEmployees(string deptNo, DateTime? startTime, DateTime? endTime, PostKinds? post, string keyword)        {            var pager = EasyUIHelper.GetDataPager();            var sorting = EasyUIHelper.GetSorting();            using (var context = new DbContext())            {                var list = context.Employees                    .Segment(pager)                    .OrderBy(sorting)                    .AssertWhere(!string.IsNullOrEmpty(deptNo), s => s.Dept.No.StartsWith(deptNo))                    .AssertWhere(startTime != null, s => s.Birthday >= startTime.Value.StartOfDay())                    .AssertWhere(endTime != null, s => s.Birthday <= endTime.Value.EndOfDay())                    .AssertWhere(post != null, s => s.Post == post)                    .AssertWhere(!string.IsNullOrEmpty(keyword), s => s.Name.Contains(keyword))                    .Select(s => new                        {                            s.Id,                            s.No,                            s.Name,                            Sex = ((Sex)s.Sex).GetDescription(),                            Post = s.Post.GetDescription(),                            s.Birthday,                            s.Mobile,                            s.Address,                            s.Description                        })                    .ToList();                return EasyUIHelper.Transfer(pager, list);            }        }

但有一种情况,即没有单击列头的情况下,默认使用某一属性排序,比如按编码降序排列,这时,Order方法可以这样写:

        /// <summary>        /// 根据查询条件获取员工。        /// </summary>        /// <param name="deptNo">部门编码。</param>        /// <param name="startTime">开始日期。</param>        /// <param name="endTime">结束时间。</param>        /// <param name="post">岗位类别。</param>        /// <param name="keyword">关键字</param>        /// <returns></returns>        [ExceptionBehavior(true)]        public object GetEmployees(string deptNo, DateTime? startTime, DateTime? endTime, PostKinds? post, string keyword)        {            var pager = EasyUIHelper.GetDataPager();            var sorting = EasyUIHelper.GetSorting();            using (var context = new DbContext())            {                var list = context.Employees                    .Segment(pager)                    .OrderBy(sorting, u => u.OrderByDescending(t => t.No))                    .AssertWhere(!string.IsNullOrEmpty(deptNo), s => s.Dept.No.StartsWith(deptNo))                    .AssertWhere(startTime != null, s => s.Birthday >= startTime.Value.StartOfDay())                    .AssertWhere(endTime != null, s => s.Birthday <= endTime.Value.EndOfDay())                    .AssertWhere(post != null, s => s.Post == post)                    .AssertWhere(!string.IsNullOrEmpty(keyword), s => s.Name.Contains(keyword))                    .Select(s => new                        {                            s.Id,                            s.No,                            s.Name,                            Sex = ((Sex)s.Sex).GetDescription(),                            Post = s.Post.GetDescription(),                            s.Birthday,                            s.Mobile,                            s.Address,                            s.Description                        })                    .ToList();                return EasyUIHelper.Transfer(pager, list);            }        }

三、图片上传

员工表设计了一个照片的字段,但是之前我们并没有用到它,现在我们就把照片上传给加上。

首先,要引入上传所需的js,只需要在BundleHelper.Render 后面再加上 upload 就可以了。

    <%= BundleHelper.Render("base", "upload") %>

 接下来修改一下表单的table,加一个图片和上传图片的链接:

        <table class="form-body">            <tr>                <td class="addon">部门</td>                <td&