websitepanel/WebsitePanel/Sources/WebsitePanel.WebDavPortal/ModelBinders/DataTables/JqueryDataTableModelBinder.cs
2015-02-18 02:35:32 -08:00

78 lines
No EOL
2.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Mvc;
using Microsoft.Ajax.Utilities;
using WebsitePanel.WebDavPortal.Models.Common.DataTable;
namespace WebsitePanel.WebDavPortal.ModelBinders.DataTables
{
public class JqueryDataTableModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
base.BindModel(controllerContext, bindingContext);
HttpRequestBase request = controllerContext.HttpContext.Request;
// Retrieve request data
int draw = Convert.ToInt32(request["draw"]);
int start = Convert.ToInt32(request["start"]);
int count = Convert.ToInt32(request["length"]);
// Search
var search = new JqueryDataTableSearch
{
Value = request["search[value]"],
IsRegex = Convert.ToBoolean(request["search[regex]"])
};
var orderIndex = 0;
var orders = new List<JqueryDataTableOrder>();
while (request["order[" + orderIndex + "][column]"] != null)
{
orders.Add(new JqueryDataTableOrder()
{
Column = Convert.ToInt32(request["order[" + orderIndex + "][column]"]),
Ascending = (request["order[" + orderIndex + "][dir]"] == "asc")
});
orderIndex++;
}
// Columns
var columnsIndex = 0;
var columns = new List<JqueryDataTableColumn>();
while (request["columns[" + columnsIndex + "][name]"] != null)
{
columns.Add(new JqueryDataTableColumn
{
Data = request["columns[" + columnsIndex + "][data]"],
Name = request["columns[" + columnsIndex + "][name]"],
Orderable = Convert.ToBoolean(request["columns[" + columnsIndex + "][orderable]"]),
Search = new JqueryDataTableSearch
{
Value = request["columns[" + columnsIndex + "][search][value]"],
IsRegex = Convert.ToBoolean(request["columns[" + columnsIndex + "][search][regex]"])
}
});
columnsIndex++;
}
return new JqueryDataTableRequest
{
Draw = draw,
Start = start,
Count = count,
Search = search,
Orders = orders,
Columns = columns
};
}
}
}