Почему вызов Ajax не ударил? - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь применить фильтр к данным, отображаемым на карте, но по какой-то причине настроенный мной вызов Ajax не выполняется.Я могу добраться до строки console.log в представлении, но ничего после этого в вызове Ajax никогда не выполняется.Это делается в ASP.NET MVC.

У меня есть похожие Ajax-вызовы в этом проекте от других разработчиков, которые работают аналогичным образом.Я попытался реструктурировать свой код, чтобы он работал аналогичным образом, но безуспешно.Другие разработчики понятия не имеют, что происходит.

C # в контроллере

[HttpPost]
public ActionResult MapFilter(string filterLake, bool filterPets)
{
    var filteredProperties = db.Properties.Include(a => a.PropertyCategory).Where(b => b.Status == true).Select(x => new { x.PropertyName, x.PropertyId, x.RatePerNight, x.RatePerWeek, x.MarketingTitle, x.Latitude, x.Longitude, x.Pets, x.PropertyCategory.PropertyCategoryName });

    if (filterLake != "")
        filteredProperties = filteredProperties.Where(a => a.PropertyCategoryName == filterLake);
    if (filterPets != true)
        filteredProperties = filteredProperties.Where(a => a.Pets == filterPets);

    var jsonProperties = JsonConvert.SerializeObject(filteredProperties);

    return new JsonResult()
    {
        Data = jsonProperties,
        JsonRequestBehavior = JsonRequestBehavior.AllowGet
    };
}

JavaScript & Ajax в представлении

var filterLake, filterPets;
var btnApplyFilters = document.getElementById("applyFilters");
var filterLakeNode = document.getElementById("filterLake");
var filterPetsNode = document.getElementById("filterPets");

$(document).ready(function () {
    btnApplyFilters.onclick = function () {
        filterLake = filterLakeNode.options[filterLakeNode.selectedIndex].value;
        filterPets = filterPetsNode.options[filterPetsNode.selectedIndex].value;
        console.log("Lake:|" + filterLake + "| Pets:|" + filterPets + "|");
        $.ajax({
            url: "/Estates/MapFilter",
            type: "Post",
            data: {
                "filterLake": filterLake,
                "filterPets": filterPets
            },
            success: function (result) {
                filteredMapData = result;
                console.log("Result = " + result);
                loadMapMarkers(true)
            }
        });
    };
})

Когда я запускаюПрограмма на локальном хосте, я могу без проблем достичь линии

console.log("Lake:|" + filterLake + "| Pets:|" + filterPets + "|");

.Ничего после не запускается.

1 Ответ

0 голосов
/ 27 июня 2019

Вам нужно проверить значение filterPets, оно должно быть true/false, тогда связыватель модели может отображаться с типом bool.

Для типа примитива (bool, int, float) следует использовать nullable тип bool? для предотвращения неправильного формата значения регистра.

[HttpPost]
public ActionResult MapFilter(string filterLake, bool? filterPets)
{
}

С этим параметром, если filterPets имеет неправильное значение, он будет нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...