如何将 Ajax 参数传递给 ASP.NET 核心中的控制器
How to pass Ajax params to controller in ASP.NET Core
我用 select2 js 创建了一个 select 并创建了 ajax 请求:
$('#slcCidade').select2({
ajax: {
type:'POST',
url: '/get-cidade',
minimumInputLength: 3,
data: function (params) {
var query = {
search: params.term
}
return query;
},
processResults: function (data) {
return {
results: data.items
};
}
}
});
在我的控制器中,我有以下方法来获取数据,然后它 returns 到我的页面:
[Route("get-cidade/{search:regex(^[[a-zA-Z]])}")]
[HttpPost]
public async Task<JsonResult> GetCidade(string search)
{
var lstCidadesVM = _mapper.Map<IEnumerable<CidadeViewModel>>(await _cidadeBLL.GetByNome(search));
return new JsonResult(new { Data = lstCidadesVM });
}
请求从未 returns 到我的控制器并分析请求我发现发生了 404 错误
Request URL: https://localhost:44394/get-cidade?search=curvelo
Request Method: GET
Status Code: 404 Not Found
Remote Address: [::1]:44394
Referrer Policy: no-referrer-when-downgrade
我哪里做错了?我只需要通过 AJAX.
输入搜索词来从我的控制器调用该方法
谢谢!
我认为您正在实施的路由主要是“/get-cidade/curvelo”,没有任何数据作为参数传输。
Select2 设置正确,问题出在控制器中的 GetCity 方法路由,它只是通过删除路由的 {search:regex(^[[a-zA-Z]])}
来工作。方法是这样的:
[Route("get-cidade")]
public async Task<JsonResult> GetCidade(string search)
{
var lstCidadesVM = _mapper.Map<IEnumerable<CidadeViewModel>>(await _cidadeBLL.GetByNome(search));
return new JsonResult(new { Data = lstCidadesVM });
}
我用 select2 js 创建了一个 select 并创建了 ajax 请求:
$('#slcCidade').select2({
ajax: {
type:'POST',
url: '/get-cidade',
minimumInputLength: 3,
data: function (params) {
var query = {
search: params.term
}
return query;
},
processResults: function (data) {
return {
results: data.items
};
}
}
});
在我的控制器中,我有以下方法来获取数据,然后它 returns 到我的页面:
[Route("get-cidade/{search:regex(^[[a-zA-Z]])}")]
[HttpPost]
public async Task<JsonResult> GetCidade(string search)
{
var lstCidadesVM = _mapper.Map<IEnumerable<CidadeViewModel>>(await _cidadeBLL.GetByNome(search));
return new JsonResult(new { Data = lstCidadesVM });
}
请求从未 returns 到我的控制器并分析请求我发现发生了 404 错误
Request URL: https://localhost:44394/get-cidade?search=curvelo
Request Method: GET
Status Code: 404 Not Found
Remote Address: [::1]:44394
Referrer Policy: no-referrer-when-downgrade
我哪里做错了?我只需要通过 AJAX.
输入搜索词来从我的控制器调用该方法谢谢!
我认为您正在实施的路由主要是“/get-cidade/curvelo”,没有任何数据作为参数传输。
Select2 设置正确,问题出在控制器中的 GetCity 方法路由,它只是通过删除路由的 {search:regex(^[[a-zA-Z]])}
来工作。方法是这样的:
[Route("get-cidade")]
public async Task<JsonResult> GetCidade(string search)
{
var lstCidadesVM = _mapper.Map<IEnumerable<CidadeViewModel>>(await _cidadeBLL.GetByNome(search));
return new JsonResult(new { Data = lstCidadesVM });
}