C# ASP.NET[路由(“api/DVD/search”)函数未被调用
我正在对“”进行ajax调用,它可以接受四个参数,例如title、releaseYear、director和rating,但每次我调用路由时,调试时,都不会调用函数C# ASP.NET[路由(“api/DVD/search”)函数未被调用,c#,asp.net,routes,C#,Asp.net,Routes,我正在对“”进行ajax调用,它可以接受四个参数,例如title、releaseYear、director和rating,但每次我调用路由时,调试时,都不会调用函数Search()。我也试过邮递员,但似乎无论我用什么工具,它都会挂起来,无法到达路径。如果你知道设置这条路线的另一种方法,我想知道 这是我的列表APIController.cs public class ListingsAPIController : ApiController { [Route("api/dv
Search()
。我也试过邮递员,但似乎无论我用什么工具,它都会挂起来,无法到达路径。如果你知道设置这条路线的另一种方法,我想知道
这是我的列表APIController.cs
public class ListingsAPIController : ApiController
{
[Route("api/dvds/search")]
[AcceptVerbs("GET")]
public IHttpActionResult Search(string title, int? releaseYear, string director,
string rating)
{
var repo = DvdRepositoryFactory.GetRepository();
try
{
var parameters = new ListingSearchParameters()
{
Title = title,
ReleaseYear = releaseYear,
Director = director,
Rating = rating
};
var result = repo.Search(parameters);
return Ok(result);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
}
查看/列表/搜索.cshtml:
@section Scripts
{
<script>
$(document).ready(function () {
$("#searchForm").submit(function (e) {
search();
return false;
});
});
function search() {
var params;
params = 'title=' + $('#title').val() + '&releaseYear=' + $('#releaseYear').val() + '&director=' +
$('#director').val() + '&rating=' + $('#rating').val();
$.ajax({
type: 'GET',
url: 'http://localhost:44315/api/dvds/search?' + params,
success: function (results) {
console.log("search");
$('#searchResults').empty();
$.each(results, function (index, dvd) {
var html = '<div class="col-xs-8 col-sm-4 col-md-4">' +
'<div class="card" style="border:2px solid #0094ff; width: 20rem; border-radius: 5px; ">' +
'<div class="pl-3 pt-1 text-center">' +
'<h4 class="card-title text-primary">' + dvd.Title + '</h4>' +
'<p class="recentListing">' + dvd.ReleaseYear + '</p>' +
'<p class="recentListing">' + dvd.Director + '</p>' +
'<p class="recentListing">' + dvd.Rating + '</p>' +
'<p class="recentListing">' + dvd.Notes + '</p>' +
'</div>';
$('#searchResults').append(html.toString());
});
},
error: function () {
alert('Error performing search, try again later!')
},
done: function () {
alert('Search AJAX complete')
}
});
}
</script>
}
@节脚本
{
$(文档).ready(函数(){
$(“#搜索表单”)。提交(功能(e){
搜索();
返回false;
});
});
函数搜索(){
var参数;
params='title='+$('#title').val()+'&releaseYear='+$('#releaseYear').val()+'&director='+
$('#director').val()+'&rating='+$('#rating').val();
$.ajax({
键入:“GET”,
网址:'http://localhost:44315/api/dvds/search?“+params,
成功:功能(结果){
控制台日志(“搜索”);
$(“#搜索结果”).empty();
$.each(结果、函数(索引、dvd){
var html=''+
'' +
'' +
''+dvd.标题+''+
“”+dvd.ReleaseYear+”
'+
“”+dvd.Director+”
'+
“”+dvd.Rating+”
'+
“”+dvd.Notes+”
'+
'';
$('#searchResults').append(html.toString());
});
},
错误:函数(){
警报('执行搜索时出错,请稍后重试!')
},
完成:函数(){
警报('Search AJAX complete')
}
});
}
}
我已尝试将路径从列表
重命名为DVD
,但仍然出现错误
更新:我了解到,Visual Studio 2019在将身份验证更改为“个人用户帐户”时,强制项目使用“配置HTTPS”选项。HTTP过去是旧版本的默认设置
您调用
http
,而您的api在https
上,所以在您的搜索页面中调用https
url: 'https://localhost:44315/api/dvds/search?'
或者只删除基本URL:
url: '/api/dvds/search?'
检查您的查询可能您在SQL中有错误您得到的错误是什么?如果您在错误函数中设置了一个参数,您可以在警报中看到错误。是的,它需要一段时间才能显示,错误:“执行搜索时出错,请稍后再试!”我真的不觉得路线在听什么,我只是希望有一种方法可以查看正在听的路线列表,看看路线是否正确。我知道在asp.net core中我可以运行cli,但我不确定您是否可以在asp.net中执行此操作。