Почему в моей таблице не отображаются желаемые результаты, основанные на выпадающих списках MVC? - PullRequest
0 голосов
/ 25 апреля 2020

В настоящее время я создаю приложение MVC и хочу отобразить частичную страницу со списком автомобилей на основе выбранных раскрывающихся списков. Я также хочу, чтобы мое приложение выполняло поиск без необходимости выбора всех раскрывающихся списков. Мне посоветовали использовать операторы if для завершения, но я не уверен, правильно ли я это делаю. В данный момент я не могу выполнять поиск по отдельным раскрывающимся спискам или по любой комбинации из 1 раскрывающегося списка + раскрывающегося списка «Доступно». Я не получаю никаких ошибок, но результаты не отображаются.

Это мой взгляд

@model IgnitionHub2._0.Models.Car
@{
    ViewBag.Title = "Car Search Page";
}


<h2>Cars</h2>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<div class="center-div">
    <div class="form-inline">
        @Html.DropDownListFor(model => model.CarLotID, new SelectList(Model.CarLotList, "CarLotID", "LotName"), "Select Car Lot", new { @class = "form-control" })
        @Html.DropDownListFor(model => model.Model.MakeID, new SelectList(Model.MakeList, "MakeID", "Name"), "Select Make", new { @class = "form-control" })
        @Html.DropDownListFor(model => model.ModelID, new SelectList(Model.ModelList, "ModelID", "Name"), "Select Model", new { @id = "ModelID", @class = "form-control" })
        @Html.DropDownListFor(model => model.Available, new[] { new SelectListItem { Text = "Yes", Value = "true" }, new SelectListItem { Text = "No", Value = "false" } }, "Available", new { @id = "Available", @class = "form-control" })
        <button id="search">Search</button>
    </div>
</div>
<div id="searchResults">
    @{Html.RenderPartial("_Index", Model.CarList);}
</div>
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/jquery-3.4.1.min.js"></script>
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

    <script type="text/javascript">
    $(document).ready(
        function () {
        var makeUrl = '@Url.Action("GetCarDetails")';
        var models = $('#ModelID')
        $('#Model_MakeID').change(function () {
            models.empty();
                $.getJSON(makeUrl, { MakeID: $(this).val() },function(data){
                    if (!data) {
                        return;
                    }
                    models.append($('<option></option>').val('').text('Please select'));
                    $.each(data, function(index, item) {
                        models.append($('<option value=' + item.ModelID + '></option>').text(item.Name));
                    });
                });
            })
        })
        $(document).ready(function () {
         var url = '@Url.Action("DisplaySearchResults","Car")';
        $('#search').click(function () {
            var carLotID = $('#CarLotID').val();
            var makeID = $('#Model_MakeID').val();
            var modelID = $('#ModelID').val();
            var available = $('#Available').val();
            $('#searchResults').load(url + "?CarLotID=" + carLotID + "&MakeID=" + makeID + "&ModelID=" + modelID +"&Available=" + available);
        })
        })
    </script>
}

Это мой контроллер

public ActionResult DisplaySearchResults(int? CarLotID, int? MakeID, int? ModelID, bool? Available)
    {
        if (CarLotID == null)
        {
            var makeModel = db.Cars.Where(c => c.Model.MakeID == MakeID && c.ModelID == ModelID && c.Available == Available).ToList();

           return PartialView("_Index", makeModel);
        }
        if (MakeID == null)
        {
            var calotModel = db.Cars.Where(c => c.CarLotID == CarLotID && c.ModelID == ModelID && c.Available == Available).ToList();
            return PartialView("_Index", calotModel);
        }
        if (ModelID == null)
        {
            var makeCarLot = db.Cars.Where(c => c.CarLotID == CarLotID && c.Model.MakeID == MakeID && c.Available == Available).ToList();
            return PartialView("_Index", makeCarLot);
        }
        if (Available == null)
        {
            var mmLot = db.Cars.Where(c => c.CarLotID == CarLotID && c.Model.MakeID == MakeID && c.ModelID==ModelID).ToList();
            return PartialView("_Index", mmLot);
        }
        if(Available == null & CarLotID == null)
        {
            var model = db.Cars.Where(c => c.Model.MakeID == MakeID && c.ModelID == ModelID).ToList();
            return PartialView("_Index", model);
        }
        if (Available == null && MakeID == null)
        {
            var model = db.Cars.Where(c => c.CarLotID == CarLotID && c.ModelID == ModelID).ToList();
            return PartialView("_Index", model);
        }
        if (Available == null && ModelID == null)
        {
            var model = db.Cars.Where(c => c.Model.MakeID == MakeID && c.CarLotID == CarLotID).ToList();
            return PartialView("_Index", model);
        }
        if (ModelID == null && CarLotID == null)
        {
            var model = db.Cars.Where(c => c.Model.MakeID == MakeID && c.Available == Available).ToList();
            return PartialView("_Index", model);
        }
        if (MakeID == null && CarLotID == null)
        {
            var model = db.Cars.Where(c => c.ModelID == ModelID && c.Available == Available).ToList();
            return PartialView("_Index", model);
        }
        if (MakeID == null && ModelID == null)
        {
            var model = db.Cars.Where(c => c.CarLotID == CarLotID && c.Available == Available).ToList();
            return PartialView("_Index", model);
        }
        if (ModelID == null && CarLotID == null && MakeID==null)
        {
            var model = db.Cars.Where(c => c.Available == Available).ToList();
            return PartialView("_Index", model);
        }
        if (ModelID == null && CarLotID == null && Available == null)
        {
            var model = db.Cars.Where(c => c.Model.MakeID == MakeID).ToList();
            return PartialView("_Index", model);
        }
        if (Available == null && CarLotID == null && MakeID == null)
        {
            var model = db.Cars.Where(c => c.ModelID == ModelID).ToList();
            return PartialView("_Index", model);
        }
        if (ModelID == null && Available == null && MakeID == null)
        {
            var model = db.Cars.Where(c => c.CarLotID == CarLotID).ToList();
            return PartialView("_Index", model);
        }
        if (ModelID == null && Available == null && MakeID == null &&CarLotID==null)
        {
            var model = db.Cars.ToList();
            return PartialView("_Index",model);
        }
        else
        {
            var model = db.Cars.Where(c => c.Model.MakeID == MakeID && c.ModelID == ModelID &&
            c.CarLotID == CarLotID && c.Available == Available).ToList();// build list based on parameter searchText
            return PartialView("_Index", model);
        }
    }
    public ActionResult _Index()
    {
        var cars = new List<Car>(db.Cars.Include(x => x.Images).ToList()); 
        return PartialView(cars);
    }

Я не включил частичную страницу для этого поста, потому что он не вызывает никаких проблем, и я не хотел, чтобы пост был длиннее, чем он есть.

Пожалуйста, помогите! Заранее спасибо.

1 Ответ

0 голосов
/ 28 апреля 2020

После некоторого исследования я понял, что этот подход был неправильным. Я выполнил желаемый результат в своей таблице на основе поиска с содержанием этого сообщения: Фильтрация поиска по нескольким выпадающим спискам в MVC

...