如何将对象数组发送到服务器。 Asp.Net Core 3.1 405 方法不允许

Posted

技术标签:

【中文标题】如何将对象数组发送到服务器。 Asp.Net Core 3.1 405 方法不允许【英文标题】:how to send array of object to server. Asp.Net Core 3.1 405 Method Not Allowed 【发布时间】:2022-01-15 10:42:02 【问题描述】:

我正在尝试将对象数组发送到 Web Api post ActionResult 方法。 我的对象数组如下所示

'["TitleFeature":"عنوان یک","ValueFeature":"مقداریک","IdProduct":"1","TitleFeature":"عنوان یک","ValueFeature":"مقداریک","IdProduct":"1"]'

我的函数 JS 是这样的

const uri = '/api/Feature/PostFeatures';
        const baseURL = window.location.origin;
        var dataFeature = getFeature();
        var features = JSON.stringify(dataFeature);

        $.ajax(
            contentType: "application/json",
            dataType: 'json',
            type: "POST",
            url: (baseURL + uri),
            data: features,
        );

我的 Controller.cs 是这样的

[HttpPost]
    [AllowAnonymous]
    public async Task<ActionResult<Feature>> PostFeatures([FromBody] List<Feature> features)
    
        if (features != null)
            foreach (var item in features)
            
                _context.features.Add(item);
            
        await _context.SaveChangesAsync();

        return Ok();
    

我使用基于角色的授权,这是我的角色:

[Route("api/[controller]")]
[ApiController]
[Authorize(Roles = "admin")]
public class FeatureController : ControllerBase

如何修复错误 405?

【问题讨论】:

尝试将 ajax 请求中的数据替换为:data: features,注意大括号。并确保在 Startup.cs 中配置了 CORS 策略 我将 WebAPI 控制器替换为 razore 控制器并实现 CORS。我将视图中的数据传递给控制器​​,但出现了一个新问题。我无法在函数参数中获取 功能列表。我从视图中得到了空值。 @HassanMonjezi 【参考方案1】:

405错误表示你输入了url但是http请求不匹配,所以如果你的action方法上没有route属性,可以尝试将ajax请求地址改为.../api/Feature

【讨论】:

以上是关于如何将对象数组发送到服务器。 Asp.Net Core 3.1 405 方法不允许的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?

使用 jQuery 将 JSON 对象成功发送到 ASP.NET WebMethod

如何将int数组发送到post web api c#asp.net [重复]

我可以通过 ASP.NET 将对象从客户端 javascript 发送到服务器端代码吗?

如何将类的对象发送到数据库以存储在 ASP.NET MVC5 中?

如何使用 AJAX 将 JSON 数据发送到 ASP 服务器?