惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
Cloudbric
Cloudbric
博客园 - 司徒正美
美团技术团队
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
PCI Perspectives
PCI Perspectives
宝玉的分享
宝玉的分享
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Last Week in AI
Last Week in AI
S
Schneier on Security
N
News | PayPal Newsroom
B
Blog RSS Feed
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
S
Secure Thoughts
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tenable Blog
S
Securelist
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
H
Heimdal Security Blog
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
K
Kaspersky official blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs

博客园 - YbSoftwareFactory

YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法 YbSoftwareFactory 代码生成插件【二十四】:MVC中实现动态自定义路由 YbSoftwareFactory 代码生成插件【二十三】:集成强大的公文流转系统 YbSoftwareFactory 代码生成插件【二十二】:CMS基础功能的实现 YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧 YbSoftwareFactory 代码生成插件【二十】:DynamicObject的序列化 YbSoftwareFactory 代码生成插件【十九】:实体类配合数据库表字段进行属性扩展的小技巧 YbSoftwareFactory 代码生成插件【十八】:树形结构下的查询排序的数据库设计 YbSoftwareFactory 代码生成插件【十七】:先进的权限模型体系设计 YbSoftwareFactory 代码生成插件【十六】:Web 下灵活、强大的审批流程实现(含流程控制组件、流程设计器和表单设计器) YbSoftwareFactory 代码生成插件【十五】:Show 一下最新的动态属性扩展功能与键值生成器功能 YbSoftwareFactory 代码生成插件【十四】:通过 DynamicLinq 简单实现 N-Tier 部署下的服务端数据库通用分页 YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性 YbSoftwareFactory 代码生成插件【十二】:超级灵活方便的应用程序设置管理API YbSoftwareFactory 代码生成插件【十一】:ASP.NET WebApi MVC下组织机构管理和菜单权限管理的实现 YbSoftwareFactory 代码生成插件【十】:ASP.NET WebApi MVC下审计、缓存和导出功能的实现 YbSoftwareFactory 代码生成插件【九】:基于JQuery、WebApi的ASP.NET MVC插件的代码生成项目主要技术解析 YbSoftwareFactory 代码生成插件【七】:YbRapidSolution for WinForm 插件生成项目总体架构介绍 YbSoftwareFactory 代码生成插件【六】:WinForm 完美解决方案的代码生成插件
YbSoftwareFactory 代码生成插件【八】:基于JQuery EasyUI、Web Api的 ASP.NET MVC 代码生成插件
YbSoftwareFactory · 2013-02-22 · via 博客园 - YbSoftwareFactory

    “YbRapidSolution for MVC”是 YbSoftwareFactory 最新的代码生成插件,可一键生成基于ASP.NET MVC的解决方案源代码。其生成的 Demo 项目地址:http://mvcdemo.yellbuy.com/。本文末尾还将提供一个 Dynamic Linq 实现源码的下载地址,供感兴趣的朋友下载。

    注:该 Demo 应用程序的源码完全通过 YbSoftwareFactory 一键生成,在此基础上二次开发将大大节约开发周期。

 核心特性:

1、界面层使用ASP.NET MVC 4.0+JQuery EasyUI,基于Razor 语法,界面美观,操作简便。

2、集成Web API,可通过 Web API 对外发布数据,提供GET\POST\PUT\DELETE四个方法,可供 Web、WinForm、WPF、Silverlight 等所有类型的客户端调用和管理业务数据。

    如下是Web API发布的数据:

3、通过 Dynamic Linq 实现数据库的模糊查询和分页,显著提高大数据量下的性能,本文最后将提供 Dynamic Linq 实现源码的下载地址。

    基本原理:

    需要在服务器端实现的基于泛型的ApiController类中暴露如下GET分页方法

public ResponseResult<M> Get(string filter, int page, int rows, string sort, string order)
        {
            
            var table = Table;
            if(!string.IsNullOrWhiteSpace(filter))
            {
                var str=GetFilterFormat();
                if(!string.IsNullOrWhiteSpace(str))
                    table = table.Where(str,filter);
            }
            var total = table.LongCount();
            table = table.OrderBy(string.Format("{0} {1}", sort, order)).Skip((page - 1)*rows).Take(rows);
            var items = table.ToList();
            var models = InjectFrom(items);
            return new ResponseResult<M>(total, models);
        }

    本方法后面的“rows”, “sort”, “order”三个参数为JQuery EasyUI datagrid设置为服务器端分页所需的默认参数,通过在前台页面中设置datagrid的“pagination: true”后将会自动追加这些参数,因此该方法的参数顺序必须和datagrid的调用保持一致。

    filter为追加的查询参数,用于模糊匹配,需要在前台的JS中在查询时动态设置其参数值:

function setQueryParams(value) {
    var queryParams = grid.datagrid('options').queryParams;
    queryParams.filter = value;
    grid.datagrid('options').queryParams = queryParams;
}

    同时后台的每个实体需要实现如下的过滤表达式,以便支持查询后的数据库分页,此处使用了Dynamic Linq 技术,你可自定义符合自身需求的查询方式:

protected override string[] FilterArray
        {
            get
            {
                return new[] { "ProductName.Contains(@0)",
                    "QuantityPerUnit.Contains(@0)", 
                    "Categories.CategoryName.Contains(@0)", 
                    "Suppliers.CompanyName.Contains(@0)" };
            }
        }

4、数据访问层使用 EntityFramework,使用Code First,基于其提供的IQueryable接口实现查询和分页。

5、数据编辑界面,自动处理One-Many的关系:

6、集成方便易用的数据字典功能

    可排序的网格数据字典界面:

i吗

    网格数据字典的管理使用通用API,你仅需定义所要管理的主代码即可:

//此处添加需要的主代码
        public IEnumerable<ConcreteData> Get()
        {
            var items = new List<ConcreteData>();

            items.Add(new ConcreteData() { ConcreteType = "类别"});
            items.Add(new ConcreteData() { ConcreteType = "颜色" });
            items.Add(new ConcreteData() { ConcreteType = "民族" });

            return items;
        }


    可排序的层次数据字典:

   层次数据字典的管理也使用通用API,你同样仅需定义所要管理的主代码即可:

public IEnumerable<HierarchyData> Get()
        {
            var items = new List<HierarchyData>();
            //此处添加需要的主代码
            items.Add(new HierarchyData() { HierarchyType = "行政区域" });
            items.Add(new HierarchyData() { HierarchyType = "部门" });

            return items;
        }

7、集成完善的权限控制功能

    登录用户管理界面:

    角色管理界面:

附件一:点击下载Dynamic Linq的源代码