Я использую ASP.NET MVC 5 и EF 6 с LINQ У меня есть эта функция, которая возвращает результат JSON для JQuery Datatables.добавить столбец в результат запроса LINQ для jQuery datatables
public ActionResult Index(jQueryDataTableParamModel param = null)
{
if (Request.IsAjaxRequest() && param != null)
{
var allCategories = _db.Categories.ToList();
IEnumerable<Category> categories;
var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
var sortDirection = Request["sSortDir_0"]; // asc or desc
Func<Category,string> orderingFunction = (c => sortColumnIndex==1? c.Name :
sortColumnIndex==2? c.SortOrder.ToString(): c.Status.ToString());
if (!string.IsNullOrEmpty(param.sSearch))
{
if(sortDirection == "desc"){
categories = (from category in allCategories
where category.Name.ToLower().Contains(param.sSearch.ToLower())
select category).OrderByDescending(orderingFunction).Skip(param.iDisplayStart).Take(param.iDisplayLength);
}
else
{
categories = (from category in allCategories
where category.Name.ToLower().Contains(param.sSearch.ToLower())
select category).OrderBy(orderingFunction).Skip(param.iDisplayStart).Take(param.iDisplayLength);
}
}
else
{
if (sortDirection == "desc") {
categories = (from category in allCategories
select category).OrderByDescending(orderingFunction).Skip(param.iDisplayStart).Take(param.iDisplayLength);
}
else{
categories = (from category in allCategories
select category).OrderBy(orderingFunction).Skip(param.iDisplayStart).Take(param.iDisplayLength);
}
}
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = categories.Count(),
iTotalDisplayRecords = categories.Count(),
aaData = (from category in categories
select new[] { category.CategoryID.ToString(), category.Name, category.SortOrder.ToString() }).ToArray()
},
JsonRequestBehavior.AllowGet);
}
return View();
}
Что я хочу, чтобы добавить столбец в результате JSon, который содержит любое строковое значение, такие как кнопка HTML или тега привязки и т.д.
Прямо сейчас с выше код я получаю результат, как этот ..
{"sEcho":"3","iTotalRecords":3,"iTotalDisplayRecords":3,"aaData":[["1","Computers","1"],["2","Laptops","4"],["3","Mobiles","3"]]}
, но я хочу результат с дополнительной колонкой в aaData
. пример:
{"sEcho":"3","iTotalRecords":3,"iTotalDisplayRecords":3,"aaData":[["1","Computers","1","<a href='somelink'>ActionLink</a>"],["2","Laptops","4","<a href='somelink'>ActionLink</a>"],["3","Mobiles","3","<a href='somelink'>ActionLink</a>"]]}
Как я могу добиться такого результата.
Thankyou, он работал .. –