加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用[HttpPost]修饰时,ASP MVC控制器操作’404 n

发布时间:2020-12-16 03:45:39 所属栏目:asp.Net 来源:网络整理
导读:我有一个控制器动作方法,它看起来像这样: public ActionResult testMethod(int id){ //do something... //return something... return View();} 但是当我指定它应该是一个“Post”方法时,我得到一个’404 not found error’: [HttpPost]public ActionResul
我有一个控制器动作方法,它看起来像这样:

public ActionResult testMethod(int id)
{
    //do something...
    //return something...
    return View();
}

但是当我指定它应该是一个“Post”方法时,我得到一个’404 not found error’:

[HttpPost]
public ActionResult testMethod(int id)
{
    //do something...
    //return something...
    return View();
}

我在同一个控制器中有其他控制器动作方法 – POST和GET,它们工作正常.但这一个不?这是怎么回事? (我确定我在这里遗漏了一些明显的东西…)

更新:
ajax调用请求控制器方法:
????var id = 1;

$.ajax({
    url: '/indices/testMethod/',data: id,type: 'POST',success: function (data) {
        //Do something
    }
});

我也尝试用Postman测试方法,确保发送POST请求.

更新2:
我已经尝试将参数更改为id,并尝试确保所有方法和url位置都大写以匹配,但没有任何影响.

在Fiddler中,我可以看到实际上正在进行GET请求,即使我在ajax调用中指定了POST请求,所以现在我需要找出为什么请求最终作为GET而不是POST发送.

我也尝试过包含属性路由描述,就像这样

[HttpPost]
    [Route("indices/TestMethod/{id:int}")]
    public ActionResult TestMethod(int id)

然后用不同的url尝试了ajax调用:

$.ajax({
    url: '/indices/TestMethod/1',success: function (data) {
        var tr = 123;
        var yr = data;
        //Do something
    }
});

使用属性路由和URL中的参数值,我在Fiddler中看到首先发生POST请求,它获得301状态错误,但随后也发出GET请求,这会得到404错误.

更新3:
经过更多的调查后,我将问题定义缩小到足以使打开一个新问题变得合理,可以在这里找到:
ASP MVC jQuery $.ajax POST request does not call controller method,but works in “fresh” MVC project

此问题似乎是由此项目处于活动状态的内容安全策略设置引起的.

解决方法

尝试将param1更改为id并查看它是否有效.这可能听起来很愚蠢,但实际上我在自己面前遇到了问题并解决了这个问题.

我能想到的另一个问题是,在你的app中,testMethod的路径是带有大写字符的/ Indices / TestMethod.当你请求/ indices / testMethod /时,可能会发生一些导致GET请求的重定向.

尝试更改ajax调用中的url或尝试添加[Route()]属性以设置路由名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读