[英]Ajax passing data to ASP.NET controller
我正在尝试在我的 ASP.NET web 应用程序上运行 ajax 请求,我在其中传递了一个搜索词并接收了一些数据
<div class="form-group">
<input type="text" id="orgSearch" placeholder="Search organisation by name..." class="form-control" name="search" autocomplete="off" data-controller="@Model.ControllerName" data-target-property="@Model.LookaheadProperty">
</div>
<script>
$(document).ready(function () {
var form = document.getElementById("orgSearch");
form.addEventListener("keyup", function (event) {
event.preventDefault();
var search = document.getElementById("orgSearch").value;
$.ajax({
type: "GET",
url: "Organisation/Search?search=" + search,
success: function (object) {
console.log(object);
}
});
});
});
</script>
然后这是我的 OrganisationsController.cs class 中的方法
public class OrganisationsController : Controller
{
[HttpGet]
public async Task<IActionResult> Search([FromRoute] string search)
{
var items = await _organisationsService.SearchAsync(search);
return Ok(items);
}
}
但是,当我尝试它时,甚至没有进行 ajax 调用(它在控制台日志上生成 404 错误)并且我不知道如何传递搜索参数。 有没有人有什么建议?
从组织到组织修复 ajax url 并在开头添加“/”:
url: "/Organisations/Search?search=" + search,
那么你的行动
public async Task<IActionResult> Search([FromQuery] string search)
{
......
}
您也可以尝试使用 [FromUri] 而不是 [FromQuery]
顺便说一句,如果您的 Mvc 版本支持属性路由,最好将操作更改为:
[Route("~/Organizations/Search/{search}")]
public async Task<IActionResult> Search( string search)
{
....
}
在这种情况下,您的 ajax url:
url: "/Organisations/Search/" + search,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.