【问题标题】:Receive parameters in action controller JSON在动作控制器 JSON 中接收参数
【发布时间】:2016-01-23 06:15:25
【问题描述】:

在带有实体框架 6 的 ASP.NET MVC 5 中,我使用带有 EF 的典型 MVC 控制器模板,并在那里添加自定义操作。

我的想法是从 AJAX 调用中调用此操作,以动态填充 select2 下拉列表。

...
    public JsonResult getWarrehouses(string name)
            {
                var warrehouses = from c in db.warrehouses 
                              where c.nom_wrh.Contains(name)
                              orderby c.nom_wrh
                              select new { c.cod_wrh, c.nom_wrh} ;
                return Json(warrehouses.ToList(), JsonRequestBehavior.AllowGet);
            }
...

但是,我不知道如何将参数传递给它,提供的参数始终为空。如果我键入:http://localhost:[port]/warrehouses/getWarrehouses/somestring,则未收到参数。 我想如何声明该操作以接收 GET 参数? 如果我的方法有误,请随时提供替代解决方案。

【问题讨论】:

  • 如果您在 ASP.NET 中使用 MVC,则将参数添加到您的路由文件中,它应该将匹配的值传递给调用的方法。
  • 问题是我打电话的方式。谢谢。
  • 要么将参数更改为string id(即使用默认路由),要么将特定路由添加到您的路由定义中 - url: warrehouese/getWarrehouses/{name}

标签: c# json asp.net-mvc asp.net-mvc-5


【解决方案1】:

问题可能出在调用中。例如: “name”是 Action 中参数的名称;

        $.ajax({
            type: "POST",
            url: @Url.Action("getWarrehouses"),
            data: {
                name: VALUE_TO_PASS

            },
            success: function (data) {

             // Manipulate (data)
            }

【讨论】:

  • 也许我应该将 POST 更改为 GET :)
【解决方案2】:

你需要使用像邮递员https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en这样的浏览器扩展

他们帮助您向 getWarrehouses 发出获取/发布请求。用你的参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2015-01-08
    • 2018-09-25
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多