【发布时间】:2020-09-13 23:35:39
【问题描述】:
我正在对'http://localhost:44315/api/listings/search'进行ajax调用,它可以接受四个参数,例如title,releaseYear,director,和rating,但是每次我调用路由时,在调试时,函数Search()从来没有被调用。我也尝试过邮递员,但似乎我使用的任何工具都只是挂起并且无法到达路径。如果你知道另一种设置这条路线的方法,我想知道。
这是我的 ListingsAPIController.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);
}
}
}
视图/列表/Search.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>
}
我尝试将路由从listings 重命名为dvds,但仍然出现错误。
更新:我了解到,Visual Studio 2019 已强制项目在将 身份验证 更改为“个人用户帐户”时使用“配置 HTTPS”选项。 HTTP 曾经是旧版本的默认设置。
【问题讨论】:
-
您遇到的错误是什么?如果您在错误函数中设置参数,您可以在警报中看到错误。
-
是的,它需要一段时间才能显示,错误:'执行搜索时出错,稍后再试!'
-
感觉路由并没有在监听任何东西,我只是希望有一种方法可以查看正在监听的路由列表,看看路由是否真的正确。我知道在 asp.net core 中我可以运行 cli,但我不确定你是否可以在 asp.net 中执行此操作。