Проблемы с сортировкой списка данных в ASP.net MVC3 - PullRequest
1 голос
/ 13 июля 2011

Я пытаюсь реализовать функциональность сортировки, которая показана в руководствах Entity Framework на сайте MVC Asp.net, здесь

http://www.asp.net/entity-framework/tutorials/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

По какой-то причине, хотя я вижу, что в URL добавляются правильные строки запроса, данные не сортируются,

У меня есть следующий оператор switch в моем контроллере, чтобы позволить мне сортировать данные по имени клиента или имени основного контакта

//Returns a list of all the customers to be displayed on the (Master edit page)
    //- TODO - Implement Paging Functionality
    public ViewResult Index(string sortOrder)
    {
        ViewBag.CustomerNameSortParm = String.IsNullOrEmpty(sortOrder) ? "CustomerName desc" : "";
        ViewBag.PrimaryContactNameSortParm = sortOrder == "PrimaryContactName" ? "PrimaryContactName desc" : "PrimaryContactName";
        var cust = repository.Customers;

        switch (sortOrder)
        {
            case "CustomerName desc":
                cust = repository.Customers.OrderByDescending(s => s.CustomerName);
                break;
            case "PrimaryContactName":
                cust = repository.Customers.OrderBy(s => s.PrimaryContactName);
                break;
            case "PrimaryContactName desc":
                cust = repository.Customers.OrderByDescending(s => s.PrimaryContactName);
                break;
            default:
                cust = repository.Customers.OrderBy(s => s.CustomerName);
                break;
        }

        return View(repository.Customers.ToList());
    }

Тогда в представлении у меня есть ссылки, созданные для каждого из заголовков кумна

<th class="header">
       @Html.ActionLink("Customer Name", "Index", new { sortOrder=ViewBag.CustomerNameSortParm })
    </th>
    <th class="header">
      @Html.ActionLink("Contact Name", "Index", new { sortOrder=ViewBag.PrimaryContactNameSortParm })
    </th>

Когда я нажимаю на ссылки, я вижу значения строки запроса в URL-адресе, например

http://localhost:58783/Admin/Index?sortOrder=PrimaryContactName

Но данные не сортируются, кто-нибудь сталкивался с подобными проблемами или знает, где я ошибаюсь? по какой-то причине комментарии в нижней части учебника Entity Framework не отображаются, поэтому я не вижу, есть ли у кого-то еще эта проблема.

Единственное отличие, которое я вижу в своем коде, заключается в том, что в учебнике в контроллере используется запрос LINQ, где я использую репозиторий и возвращаю своих клиентов из репозитория, который возвращает список клиентов IQueryable.

Любой совет приветствуется.

Ли.

1 Ответ

2 голосов
/ 13 июля 2011

Я думаю, что ваше заявление о возврате неверно, оно должно быть -

return View(cust.ToList());

вместо -

return View(repository.Customers.ToList());

Вы, кажется, сортируете данные в переменную 'cust', но затем возвращаете несортированную коллекцию в ваше представление.

...