diff --git a/NzbDrone.Web/App_Start/DataTablesMvc.cs b/NzbDrone.Web/App_Start/DataTablesMvc.cs
new file mode 100644
index 000000000..6ac4a3b4f
--- /dev/null
+++ b/NzbDrone.Web/App_Start/DataTablesMvc.cs
@@ -0,0 +1,17 @@
+using DataTables.Mvc.Core.Helpers;
+using DataTables.Mvc.Core.Models;
+using System.Web.Mvc;
+
+[assembly: WebActivator.PreApplicationStartMethod(typeof(NzbDrone.Web.App_Start.DataTablesModelBinderActivator), "Start")]
+
+namespace NzbDrone.Web.App_Start
+{
+ public static class DataTablesModelBinderActivator
+ {
+ public static void Start()
+ {
+ if (!ModelBinders.Binders.ContainsKey(typeof(DataTablesParams)))
+ ModelBinders.Binders.Add(typeof(DataTablesParams), new DataTablesModelBinder());
+ }
+ }
+}
\ No newline at end of file
diff --git a/NzbDrone.Web/App_Start/RegisterDataTablesModelBinder.cs b/NzbDrone.Web/App_Start/RegisterDataTablesModelBinder.cs
deleted file mode 100644
index cd2d24690..000000000
--- a/NzbDrone.Web/App_Start/RegisterDataTablesModelBinder.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System.Web.Mvc;
-using System.Web.WebPages;
-using NzbDrone.Web.Helpers;
-using NzbDrone.Web.Models;
-
-[assembly: WebActivator.PreApplicationStartMethod(typeof(NzbDrone.Web.App_Start.RegisterDatatablesModelBinder), "Start")]
-
-namespace NzbDrone.Web.App_Start {
- public static class RegisterDatatablesModelBinder {
- public static void Start() {
- if (!ModelBinders.Binders.ContainsKey(typeof(DataTablesParams)))
- ModelBinders.Binders.Add(typeof(DataTablesParams), new DataTablesModelBinder());
- }
- }
-}
\ No newline at end of file
diff --git a/NzbDrone.Web/Controllers/LogController.cs b/NzbDrone.Web/Controllers/LogController.cs
index bd414087a..60f9668de 100644
--- a/NzbDrone.Web/Controllers/LogController.cs
+++ b/NzbDrone.Web/Controllers/LogController.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Linq.Dynamic;
using System.Text;
using System.Web.Mvc;
+using DataTables.Mvc.Core.Models;
using NzbDrone.Common;
using NzbDrone.Core.Instrumentation;
using NzbDrone.Web.Models;
diff --git a/NzbDrone.Web/Helpers/DataTablesModelBinder.cs b/NzbDrone.Web/Helpers/DataTablesModelBinder.cs
deleted file mode 100644
index 77b79f620..000000000
--- a/NzbDrone.Web/Helpers/DataTablesModelBinder.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Web;
-using System.Web.Mvc;
-using NzbDrone.Web.Models;
-
-namespace NzbDrone.Web.Helpers
-{
- ///
- /// Model binder for datatables.js parameters a la http://geeksprogramando.blogspot.com/2011/02/jquery-datatables-plug-in-with-asp-mvc.html
- ///
- public class DataTablesModelBinder : IModelBinder
- {
- public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
- {
- DataTablesParams obj = new DataTablesParams();
- var request = controllerContext.HttpContext.Request.Params;
-
- obj.iDisplayStart = Convert.ToInt32(request["iDisplayStart"]);
- obj.iDisplayLength = Convert.ToInt32(request["iDisplayLength"]);
- obj.iColumns = Convert.ToInt32(request["iColumns"]);
- obj.sSearch = request["sSearch"];
- obj.bEscapeRegex = Convert.ToBoolean(request["bEscapeRegex"]);
- obj.iSortingCols = Convert.ToInt32(request["iSortingCols"]);
- obj.sEcho = int.Parse(request["sEcho"]);
-
- for (int i = 0; i < obj.iColumns; i++)
- {
- obj.bSortable.Add(Convert.ToBoolean(request["bSortable_" + i]));
- obj.bSearchable.Add(Convert.ToBoolean(request["bSearchable_" + i]));
- obj.sSearchColumns.Add(request["sSearch_" + i]);
- obj.bEscapeRegexColumns.Add(Convert.ToBoolean(request["bEscapeRegex_" + i]));
- obj.iSortCol.Add(Convert.ToInt32(request["iSortCol_" + i]));
- obj.sSortDir.Add(request["sSortDir_" + i]);
- }
- return obj;
- }
- }
-}
\ No newline at end of file
diff --git a/NzbDrone.Web/Models/DataTablesParams.cs b/NzbDrone.Web/Models/DataTablesParams.cs
deleted file mode 100644
index 021ff7924..000000000
--- a/NzbDrone.Web/Models/DataTablesParams.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Web;
-
-namespace NzbDrone.Web.Models
-{
- public class DataTablesParams
- {
- public int iDisplayStart { get; set; }
- public int iDisplayLength { get; set; }
- public int iColumns { get; set; }
- public string sSearch { get; set; }
- public bool bEscapeRegex { get; set; }
- public int iSortingCols { get; set; }
- public int sEcho { get; set; }
- public List bSortable { get; set; }
- public List bSearchable { get; set; }
- public List sSearchColumns { get; set; }
- public List iSortCol { get; set; }
- public List sSortDir { get; set; }
- public List bEscapeRegexColumns { get; set; }
-
- public DataTablesParams()
- {
- bSortable = new List();
- bSearchable = new List();
- sSearchColumns = new List();
- iSortCol = new List();
- sSortDir = new List();
- bEscapeRegexColumns = new List();
- }
- }
-}
\ No newline at end of file
diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj
index 92dac587e..1d77ee308 100644
--- a/NzbDrone.Web/NzbDrone.Web.csproj
+++ b/NzbDrone.Web/NzbDrone.Web.csproj
@@ -51,6 +51,9 @@
x86
+
+ ..\packages\DataTables.Mvc.0.1.0.54\lib\DataTables.Mvc.Core.dll
+
..\packages\DynamicQuery.1.0\lib\35\Dynamic.dll
@@ -137,6 +140,7 @@
+
@@ -204,7 +208,6 @@
-
@@ -224,7 +227,6 @@
Global.asax
-
@@ -232,7 +234,6 @@
-
diff --git a/NzbDrone.Web/packages.config b/NzbDrone.Web/packages.config
index e93e28704..1427f9d68 100644
--- a/NzbDrone.Web/packages.config
+++ b/NzbDrone.Web/packages.config
@@ -1,5 +1,6 @@
+
diff --git a/packages/DataTables.Mvc.0.1.0.54/Content/App_Start/DataTablesMvc.cs.pp b/packages/DataTables.Mvc.0.1.0.54/Content/App_Start/DataTablesMvc.cs.pp
new file mode 100644
index 000000000..abaaa76f4
--- /dev/null
+++ b/packages/DataTables.Mvc.0.1.0.54/Content/App_Start/DataTablesMvc.cs.pp
@@ -0,0 +1,17 @@
+using DataTables.Mvc.Core.Helpers;
+using DataTables.Mvc.Core.Models;
+using System.Web.Mvc;
+
+[assembly: WebActivator.PreApplicationStartMethod(typeof($rootnamespace$.App_Start.DataTablesModelBinderActivator), "Start")]
+
+namespace $rootnamespace$.App_Start
+{
+ public static class DataTablesModelBinderActivator
+ {
+ public static void Start()
+ {
+ if (!ModelBinders.Binders.ContainsKey(typeof(DataTablesParams)))
+ ModelBinders.Binders.Add(typeof(DataTablesParams), new DataTablesModelBinder());
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/DataTables.Mvc.0.1.0.54/DataTables.Mvc.0.1.0.54.nupkg b/packages/DataTables.Mvc.0.1.0.54/DataTables.Mvc.0.1.0.54.nupkg
new file mode 100644
index 000000000..28848589e
Binary files /dev/null and b/packages/DataTables.Mvc.0.1.0.54/DataTables.Mvc.0.1.0.54.nupkg differ
diff --git a/packages/DataTables.Mvc.0.1.0.54/lib/DataTables.Mvc.Core.dll b/packages/DataTables.Mvc.0.1.0.54/lib/DataTables.Mvc.Core.dll
new file mode 100644
index 000000000..c6457bd9b
Binary files /dev/null and b/packages/DataTables.Mvc.0.1.0.54/lib/DataTables.Mvc.Core.dll differ
diff --git a/packages/DataTables.Mvc.0.1.0.54/tools/install.ps1 b/packages/DataTables.Mvc.0.1.0.54/tools/install.ps1
new file mode 100644
index 000000000..7e1f5357f
--- /dev/null
+++ b/packages/DataTables.Mvc.0.1.0.54/tools/install.ps1
@@ -0,0 +1,5 @@
+param($installPath, $toolsPath, $package, $project)
+
+$path = [System.IO.Path]
+$appstart = $path::Combine($path::GetDirectoryName($project.FileName), "App_Start\DataTablesMvc.cs")
+$DTE.ItemOperations.OpenFile($appstart)
\ No newline at end of file