【问题标题】:MVC post method with multiple body parameters, why am I getting a 404?具有多个主体参数的 MVC 发布方法,为什么我得到 404?
【发布时间】:2017-01-02 08:08:24
【问题描述】:

我有一个定义如下的 MVC 控制器方法:

[HttpPost]
public ActionResult EndBatchForConditions(string a, int b)
{
    ...
}

用 jquery 调用,例如:

$.ajax({
    type: "POST",
    url: url,
    data: {
        a: $form.find('#aCtl').val(),
        b: $form.find('#bCtl').val()
    },
    success: function (data, textStatus, jqXHR) {
        ...
    },
    error: showError
});

这适用于我的本地,并且已经在我们的测试和生产机器上工作了大约 6 个月。

我们正在将其从其自己的网站转移到另一个网站下的应用程序,并已在测试服务器上进行了转移。这种方法给了我一个 404,其他一切都很好。另一种方法在具有相似参数的同一个控制器上以相同的方式调用,并且工作正常。我使用 Fiddler 验证了这两种方法的 url 和请求是否正确,并且完全相同。

我知道我们不允许使用 [FromBody] 属性的多个 POST 正文参数。这是拨打此电话的不正确方式吗?如果没有,我该如何解决这个问题?

【问题讨论】:

  • 你的url是你的亲戚吗?
  • ajax 调用中 url 属性的“url”值是多少?
  • 您能确认#bCtl 已找到并且有值吗?如果 b 为空,则 EndBatchForConditions 的签名不匹配(int b 不可为空),导致 404。将“int b”更改为“int”时是否有效? b'

标签: jquery ajax asp.net-mvc-routing


【解决方案1】:

这不是路由问题。该方法抛出异常,global.asax.cs 被重定向到丢失的错误页面,抛出 404。

【讨论】:

    猜你喜欢
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多