【发布时间】:2017-07-16 15:15:29
【问题描述】:
我有一个下拉列表,我可以在其中选择位置来过滤我的数据。
我有一个数组,我使用 AJAX 将它发布到我的控制器。在我的本地计算机上,当我没有从下拉列表中选择任何内容时,我得到的参数为空,正如预期的那样。但是,在我的实时网站上,该变量似乎不为空,因为它查询数据,因此结果为空。
这怎么可能?我希望该值为空,这样我就可以正确过滤数据。
谢谢, 斯蒂芬
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 控制器
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);
}
-- 编辑
我试过这个进行错误测试,在本地它警告“空”而服务器端它警告“空”:
if (locations == null)
alert("null");
if (locations.length == 0)
alert("empty");
【问题讨论】:
-
你检查过你服务器上的 jquery 版本了吗?
-
html元素长什么样?可以发一下吗?
-
这是Website,我使用的是razorview。我想这样检查会更容易吗?
-
不,您的网站可以更改。最好在此处包含相关的html,以便将来可以帮助其他人。
-
我编辑了@post。不过,我在 html 下使用 razorview。
标签: c# ajax asp.net-mvc