Javascript
sorting: true, //Enable sorting
defaultSorting: 'Name ASC', //Sort by Name by default
Controller
[HttpPost]
public JsonResult PersonList(int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
    try
    {
        int personCount = _personRepository.GetPersonCount();
        List<person> persons = _personRepository.GetPersons(jtStartIndex, jtPageSize, jtSorting);
        return Json(new { Result = "OK", Records = persons, TotalRecordCount = personCount });
    }
    catch (Exception ex)
    {
        return Json(new { Result = "ERROR", Message = ex.Message });
    }
} 
GetPersons Method with Sorting Criterias
public IEnumerable GetDeployments(string show, string name, int startIndex, int count, string sorting)
        {
//Get List of Persons from Database
    if (!string.IsNullOrEmpty(name))
               {
                   deploymentsList = deploymentsList.Where(p => p.KomponentenName.ToString().StartsWith(name));
               }
               if (string.IsNullOrEmpty(sorting) || sorting.Equals("KomponentenName ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.KomponentenName);
               }
               else if (sorting.Equals("KomponentenName DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.KomponentenName);
               }
               else if (sorting.Equals("datum ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.datum);
               }
               else if (sorting.Equals("datum DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.datum);
               }
               else if (sorting.Equals("RequesterName ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.RequesterName);
               }
               else if (sorting.Equals("RequesterName DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.RequesterName);
               }
               else if (sorting.Equals("dateDeployed ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.dateDeployed);
               }
               else if (sorting.Equals("dateDeployed DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.dateDeployed);
               }
               else
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.KomponentenName); //Default!
               }
                 return count > 0
                           ? deploymentsList.Skip(startIndex).Take(count).ToList() //Paging
                           : deploymentsList.ToList(); //No paging
            }