【问题标题】:Ajax passing data to ASP.NET controllerAjax 将数据传递给 ASP.NET 控制器
【发布时间】:2021-03-19 17:03:27
【问题描述】:

我正在尝试在我的 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 类中的方法


public class OrganisationsController : Controller
{
        [HttpGet]
        public async Task<IActionResult> Search([FromRoute] string search)
        {
            var items = await _organisationsService.SearchAsync(search);

            return Ok(items);
        }
}

但是,当我尝试它时,甚至没有进行 ajax 调用(它在控制台日志上生成 404 错误)并且我不知道如何传递搜索参数。有人有什么建议吗?

【问题讨论】:

  • 你的参数不是来自路由,是来自查询
  • “路由”参数将是 URL 路径的一部分,而不是查询字符串。
  • 您的控制器名为OrganisationsController,但您选择的路线是Organisation`。注意一个是复数,另一个不是?

标签: javascript c# asp.net


【解决方案1】:

修复 ajax url 从组织到组织并在开头添加“/”:


 url: "/Organisations/Search?search=" + search,

那么你的行动

 public async Task<IActionResult> Search([FromQuery] string search)
        {
            ......
        }

您也可以尝试使用 [FromUri] 代替 [FromQuery]

顺便说一句,如果你的 Mvc 版本支持属性路由,最好把 action 改成这样:

        [Route("~/Organizations/Search/{search}")]
        public async Task<IActionResult> Search( string search)
        {
            ....
        }

在这种情况下,您的 ajax 网址:

url: "/Organisations/Search/" + search,

【讨论】:

  • 啊,我的英雄。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 2021-09-27
  • 2014-12-08
相关资源
最近更新 更多