C# MVC綁定 List<DapperRow>到bootstrap-table列表

來源:互聯網
上載者:User

標籤:

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列表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.