繁体   English   中英

Ajax 将数据传递给 ASP.NET controller

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM