Сортировка по выпадающему списку на asp mvc - PullRequest
0 голосов
/ 12 марта 2019

Здравствуйте, я хочу отсортировать свою индексную страницу по выбранной категории с помощью viewbag.Я уже использую linq , и кнопка поиска реализована, но категория фильтрации не работает.

Этот метод индекса на контроллере

public ActionResult Index(string Search, int Ca )
    {
        //var c = User.Identity.GetUserId();

        string c = System.Web.HttpContext.Current.User.Identity.GetUserId();

        //int e =  int.Parse(Request.Form["Ca"].ToString());

        var test = (from s in db.Articles
                    where (s.UserId == c)
                    where (s.titre.Contains(Search))
                    where (s.Idc == int.Parse (Request["Ca"].ToString()))
                        select s
                       ).Distinct().ToList();
            ViewBag.Ca = new SelectList(db.Categories, "Id", "libelle");
            return View(test.ToList());          
    }

спасибо

1 Ответ

0 голосов
/ 12 марта 2019

Чтобы достичь своей цели в jQuery, вы можете использовать подход следующим образом.

[ApiController]
[Route("api/ux/input/[controller]")]
public class SelectController : ControllerBase
{
     [HttpGet("samples")]
     public async Task<JsonResult> Get() => new JsonResult(await sampleService.RetrieveSampleEntity());
}

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

$(document).ready(function() {
     loadAndOrderSampleSelect();
});

function loadAndOrderSampleSelect() {
     axios.get('/api/ux/input/select/samples').then((response) => {
          let samples = sortSelectByCategory(response.data);
          for(var index = 0; index < samples.length; index++) {
               $('#drpSamples').append('<option value="' + samples[index].id + '">' + samples[index].name + '</option>');
          }
     });
}

function sortSelectByCategory(items) {
     return items.sort(function(a, b) {
           return (b['category'] > a['category']) ? 1 : ((b['category'] < a['category']) ? -1 : 0);
     });
}

Сортировка может работать неправильно, и я предполагаю, что у вас есть выбор с идентификатором на странице drpSamples, но это должно указать вам правильное направление, чтобы сделать это с помощью JavaScript вместо серверной логики.Тем не менее, если вы находитесь на сервере внутри вашего Get, вы можете просто сделать sampleService.RetrieveSamples().OrderBy(c => c.Category);

...