элементы заказа asp.net mvc на основе параметров в контроллере - PullRequest
0 голосов
/ 11 мая 2011

Я бы хотел заказать некоторые товары по ценам. Какие параметры я передаю своему действию и как использовать его при сортировке из IQueryable<Product>?

Например, вот что у меня сейчас:

    public ActionResult Index(int page =0, int cat = 0, int subCat =0)
    {
        var products = productService.GetAllProducts();

        ProductListViewModel model = new ProductListViewModel();

        if (cat > 0)
        {
            products = products.Where(p => p.SubCategory.CategoryId == cat);
        }
        if (subCat > 0)
        {
            products = products.Where(p => p.SubCategory.SubCategoryId == subCat);
        }

        products = products.OrderBy(p => p.CreatedDate);

        model.PagedProducts = products.ToPagedList(page, 15);
        return View(model);
    }

Ответы [ 4 ]

2 голосов
/ 11 мая 2011

Вы можете оформить заказ , следующий за статьей .

1 голос
/ 11 мая 2011

Вы можете передать любую переменную, которую хотите. Int должно быть достаточно, но вы также можете использовать строку.

public ActionResult Index(int page =0, int cat = 0, int subCat =0, int order = 0)
{
    var products = productService.GetAllProducts();

    ProductListViewModel model = new ProductListViewModel();

    if (cat > 0)
    {
        products = products.Where(p => p.SubCategory.CategoryId == cat);
    }
    if (subCat > 0)
    {
        products = products.Where(p => p.SubCategory.SubCategoryId == subCat);
    }

    switch(order)
    {
       case 0:
           products = products.OrderBy(p => p.CreatedDate);  
           break;
       case 1:
           products = products.OrderBy(p => p.Price);
           break;
    }

    model.PagedProducts = products.ToPagedList(page, 15);
    return View(model);
}
0 голосов
/ 11 мая 2011

Если у вас есть флаг bool, который вы передаете, вы можете использовать его для переключения сортировки:

public ActionResult Index(int page, int cat, int subCat, int order, bool isAscending)
{
    var products = productService.GetAllProducts();

    if (isAscending)
        products = products.OrderBy(prod => prod.Price); 
    else
        products = products.OrderByDescending(prod => prod.Price);

    // Other code...
}
0 голосов
/ 11 мая 2011

Заменить

products = products.OrderBy(p => p.CreatedDate);

с

products = products.OrderBy(p => p.Price);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...