C# MVC绑定 List<DapperRow>到bootstrap-table列表
1.Dapper返回List<dynamic>对象
/// <summary>
/// 获取候选人推荐的分页数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
/// <param name="candidateName"></param>
/// <param name="allRowsCount"></param>
/// <returns></returns>
public List<dynamic> GetCandidateRecommendPage(int page, int pageSize, string candidateName, out long allRowsCount)
{
var sql = @"SELECT c.Name,c.birthday,c.CVId FROM dbo.Candidate c ";
var allRowsCountSql = @"SELECT COUNT(0) FROM dbo.Candidate"; var ret = base.DBSession.Connection.GetPage<dynamic>(page, pageSize, out allRowsCount, sql, null, allRowsCountSql).ToList();
return ret;
}
2.Controller层使用Newtonsoft.Json序列化
public JsonResult GetRecommends(int page, int pageSize, string candidatename)
{
var allRowsCount = 0L; var list = RpoJobRepository.NewInstance.GetCandidateRecommendPage(page, pageSize, candidatename, out allRowsCount); return base.NewtonsoftJson(new { total = allRowsCount, rows = list }, JsonRequestBehavior.AllowGet);
}
protected JsonResult NewtonsoftJson(object data, JsonRequestBehavior behavior)
{
return new NewtonsoftJsonResult
{
Data = data,
JsonRequestBehavior = behavior,
};
}
/// <summary>
/// Newtonsoft序列化方式
/// </summary>
public class NewtonsoftJsonResult : JsonResult
{
/// <summary>
/// 重写执行视图
/// </summary>
/// <param name="context">上下文</param>
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
} HttpResponseBase response = context.HttpContext.Response; if (string.IsNullOrEmpty(this.ContentType))
{
response.ContentType = this.ContentType;
}
else
{
response.ContentType = "application/json";
} if (this.ContentEncoding != null)
{
response.ContentEncoding = this.ContentEncoding;
} if (this.Data != null)
{
var jsonString = JsonConvert.SerializeObject(this.Data);
response.Write(jsonString);
}
}
3.View层像绑定对象列表一样绑定
columns: [{
checkbox: true
},
{
field: 'Name',
title: '姓名',
formatter: this.nameFormatter }]
这里的field和第一步里查询的列名一致。
总结
1.dapper的 base.DBSession.Connection.GetPage<dynamic>方法返回的是DapperRow列表,DapperRow 继承 Dictionary<string, object>
2.controller返回对象时做json序列化,如果使用JavaScriptSerializer,结果是字典的JSON格式,如:
"total":143694,"rows":[[{"Key":"Name","Value":"赵保龙"},{"Key":"birthday","Value":"\/Date(107712000000)\/"},
使用Newtonsoft.Json.JsonConvert 序列化是对象格式,如:
{"total":143694,"rows":[{"Name":"璧典繚榫�","birthday":"1973-06-01T00:00:00","CVId":"JR027902222R90250000000"},{"Name":"閮厛鐢�","birthday":"1981-11-01T00:00:00","CVId":null},
3.使用动态类型不必再去定义ViewModel类了,节省很多时间。
4.还有一种方式是使用DataTable也可以达到相同目的,没做尝试。
C# MVC绑定 List<DapperRow>到bootstrap-table列表的更多相关文章
- bootstrap table 列表增加输入框并保存输入的值不清除
需求: 在bootstrap table上增加输入框,需要选择的时候把输入的值保存到 row 里面,传递给其他模块使用. 实现: columns: [{ ...., { field: 'myField ...
- 在ASP.NET MVC中使用 Bootstrap table插件
Bootstrap table: http://bootstrap-table.wenzhixin.net.cn/zh-cn/getting-started/ 1. 控制器代码: using Syst ...
- .Net MVC+bootstrap Table学习
一.效果展示 二.使用方法 1).相关css和js的引用 <link href="~/Themes/Bootstrap/css/bootstrap.css" rel=&quo ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 3
原文地址:http://ddmvc4.codeplex.com/ 原文名称:Design and Develop a website using ASP.NET MVC 4, EF, Knockout ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第六节--abp控制器扩展及json封装
一,控制器AbpController 说完了Swagger ui 我们再来说一下abp对控制器的处理和json的封装. 首先我们定义一个控制器,在新增控制器的时候,控制器会自动继承自AbpContro ...
- ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十六节--SignalR与ABP框架Abp.Web.SignalR及扩展
SignalR简介 SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...
- 使用bootstrap table 数据绑定
1.最近一直在用bootstrap table 这个前端框架做项目,下面是使用bootstrap table 的一些总结 这个使用.Net 中MVC做的: 2.这个是基本的boostrap table ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第六节--abp控制器扩展及json封装以及6种处理时间格式化的方法
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 一,控制器AbpController 说完了Swagger ui 我们再来说一下abp对控制器的处理和json的封 ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 1
原文地址:http://ddmvc4.codeplex.com/ 原文名称:Design and Develop a website using ASP.NET MVC 4, EF, Knockout ...
随机推荐
- 理解C# 4 dynamic(3) – DynamicObject的使用
上篇文章"理解C# 4 dynamic(2) – ExpandoObject的使用" 了解了ExpandoObject的基本使用. 但ExpandoObject的问题就是它是一个万 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新. 本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4 ...
- 摇钱树运营小工具UI设计.vsd
去年,我负责公司的一个互联网投融资平台——摇钱树.系统运营过程中,业务和客服那边不断的反馈一些事情让技术这边协助实现.例如,土豪客户忘记登录密码后懒得自己重置,更愿意选择搭讪客服MM:再比如,客户多次 ...
- SVN+码云 简单使用流程
1.登录码云网站...
- 程序中保存状态的方式之Cookies
程序中保存状态的方式之 Cookies,之前写过一篇关于ViewState的.现在继续总结Cookies方式的 新建的测试页面login <%@ Page Language="C#&q ...
- 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?
今天群里有人聊图片上传,简单说下自己的经验(大牛勿喷) 0.如果你的方法里面是有指定路径的,记得一定要过滤../,比如你把 aa文件夹设置了权限,一些类似于exe,asp,php之类的文件不能执行,那 ...
- CSS系列:CSS文字样式
1. 设置字体 在CSS中字体通过font-family属性来设置. font-family: Verdana, Arial, Helvetica, sans-serif; 上面的字体设置告诉浏览器首 ...
- Python下使用help(dict),显示'more'不是内部或外部命令,也不是可运行的程序或批处理文件,该如何处理?
1.首先需要用管理员身份运行cmd. 2.然后检查环境变量中path中是否添加C:\Windows\System32这个路径.
- 重磅开源:TN文本分析语言
tn是desert(沙漠之鹰)和tan共同开发的一种用于匹配,转写和抽取文本的语言(DSL).并为其开发和优化了专用的编译器.基于递归下降方法和正则表达式,能解析自然文本并转换为树和字典,识别时间,地 ...
- iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements
在<SQLite的C语言接口规范(一)>中介绍了如何去连接打开数据库,本篇博客就介绍如何操作数据库,本篇主要给出了如何执行数据库查询语句(Select), 然后遍历结果集.本篇博客就直接使 ...