在升级到MVC的过程中,前端使用Mustache模板,对逻辑处理不给力,if-else都没办法实现。所以我们必须先把数据组织好,然后在前端呈现!
一、新增DataTable列
var dt = BLL.Role.GetPagerData(GetCondition(), base.sort, base.pageIndex, base.pageSize, ref base.totalRecord, ref base.totalPage); dt.Columns.Add(new DataColumn("selected",typeof(Boolean))); foreach (DataRow dr in dt.Rows) dr["selected"] = roles.Split(',').Contains(dr["AutoID"].ToString()); string dataJson = dt.ToJson();
这种方法最容易实现,原来的属性没变,只是新增加了列。然后遍历给新列赋值
二、Linq select new
var lst = BLL.AccountDetail.GetPagerList(GetCondition(), base.sort, base.pageIndex, base.pageSize, ref base.totalRecord, ref base.totalPage); var lstNew = from item in lst select new { item.AutoID, item.UserName, item.OpType, item.OpValue, item.After, item.OperateDate, item.Remark, OpValueExt = (item.OpType == 1 ? "+ " : "- ") + item.OpValue.ToString("f2") + (item.Unit == "Amount" ? " 元" : " 积分"), AfterExt = item.After.ToString("f2") + (item.Unit == "Amount" ? " 元" : " 积分"), RemarkExt = "【" + item.OperateDate + "】" + item.Remark }; string dataJson = lstNew.ToJson();
映射出一个新的匿名类,属性自定义!
三、JSON 增加属性
var json = @Html.Raw(ViewBag.InitData); //数据 json.result.titleprev=function(){ return json.result.ReplyID>0?"回复":"主题"; }; json.result.showname=function(){ return json.result.UserName==""?"匿名":json.result.UserName; };
前两个方法是在程序中完成逻辑,然后输出JSON,这里是在JSON数据中添加属性。