【问题标题】:Unable to call public async Task<IActionResult> using $.getJSON无法使用 $.getJSON 调用公共异步任务<IActionResult>
【发布时间】:2020-11-07 08:29:29
【问题描述】:

我有一个 asp.net core mvc 项目,其中一个控制器包含以下方法,

public class DetailsController : Controller
    {
public async Task<IActionResult> getEvents([FromQuery]string a, [FromQuery]string b)
          {
                ...
    
                return Json(result);
            }
}

我正在使用 $.getJSON 方法访问它,但是浏览器总是返回错误 404:

$.getJSON('/Details/getEvents?a=1&b=2')

我曾尝试在浏览器中点击此网址,但它会引发以下错误: 未找到该网址的网页: https://www.example.com/Details/getEvents?a=1&b=2 HTTP 错误 404

***** 更新 ***** 路由配置

endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

【问题讨论】:

  • 我使用的是mvc4.1.1,它可以使用$.getJSON('/Details/getEvents?a=1&amp;b=2')正确获取json。

标签: asp.net-mvc asp.net-mvc-3 model-view-controller asp.net-core-mvc


【解决方案1】:

默认情况下,MVC 不允许您使用 JSON 负载响应 HTTP GET 请求。如果您需要发送 JSON 以响应 GET,则需要通过使用 JsonRequestBehavior.AllowGet 作为 Json() 方法的第二个参数来明确允许该行为:

public class DetailsController : Controller
{
    public async Task<IActionResult> getEvents([FromQuery]string a, [FromQuery]string b)
    {
        ...
        return Json(result, JsonRequestBehavior.AllowGet);
    }
}

【讨论】:

  • 感谢您的回复,但在这里我从 javascript 调用此方法时收到 404。
  • 那么您可能需要向我们展示您是如何配置路由的。您可以尝试的一件事是,使用@Url.Action("getEvents", "details", new { area = "" }),而不是手动将 url 作为字符串。
  • 用路由配置更新了问题。
猜你喜欢
  • 2018-07-03
  • 1970-01-01
  • 2019-06-10
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 2012-11-01
相关资源
最近更新 更多