gpt4 book ai didi

c# - MVC Controller 的 AJAX 参数不是 NULL?

转载 作者:行者123 更新时间:2023-11-30 12:40:15 25 4
gpt4 key购买 nike

我有一个下拉列表,我可以在其中选择位置来过滤我的数据。

我有一个数组,我使用 AJAX 将其发布到我的 Controller 。在我的本地计算机上,当我没有按预期从下拉列表中选择任何内容时,我得到的参数为空。但是,在我的实时网站上,变量似乎不为空,因为它查询数据,所以结果为空。

这怎么可能?我希望该值为 null,以便我可以正确过滤数据。

谢谢,斯特凡

JQuery

$("#main").on("click", "#submit-search-catalog", function () {
var url = "/Home/Catalog";

var locations = $("#County").val();

if (url != "") {
$.post(url, { locations: locations },
function (data) {
if (data) {
$(".catalog-container").html(data);
}
}).fail(function (xhr, status, error) {
alert("Error");
});
}

return false;
});

MVC Controller

    public async Task<ActionResult> Catalog(int[] locations = null)
{

var companies = await db.Users.Where(u => u.IsVisibleInCatalog.Equals(true)).OrderBy(u => u.CompanyRegistrationDate).ToListAsync();

//Sort locations
if (!(locations == null || locations.Length == 0))
{
companies = companies.Where(c => locations.Contains(c.CompanyLocation) || c.CompanyLocation.Equals(1)).ToList();
}

var model = new CatalogViewModel
{
Companies = companies
};

if (Request.IsAjaxRequest())
{
return PartialView("~/Views/Home/_CatalogListPartial.cshtml", companyList);
}

return View(model);
}

-- EDIT

我试过这个用于错误测试,在本地它会提示“空”,而在服务器端它会提示“空”:

    if (locations == null)
alert("null");

if (locations.length == 0)
alert("empty");

最佳答案

在 jquery 上选择像$("#County").val();可能是基于版本的问题。在 val() 函数上;在 jQuery 3.0 中,如果没有选择任何选项,它返回一个空数组;在 jQuery 3.0 之前,它返回 null。但它可以更改为对象类型,如单选按钮或组合。

关于c# - MVC Controller 的 AJAX 参数不是 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com