首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$http post对象始终为空

$http post对象始终为空
EN

Stack Overflow用户
提问于 2017-05-04 20:42:27
回答 1查看 1.2K关注 0票数 0

我试图使用$http post将一个对象发送到后端,但其中一个参数始终为null。当保存一个新对象时,我用同样的方式格式化dto,这很好,但是当我试图调用更新函数时,它就不能工作了。我遗漏了什么?

这是我的控制器代码:

代码语言:javascript
复制
vm.postUpdateITSM = function (itsm) {
        $http({
            method: "POST",
            url: "api/sources/" + itsm.Id,
            data: {
                id: itsm.Id,
                dto: {
                    ConnectorType: itsm.Type,
                    SourceName: itsm.ServerName,
                    DisplayName: itsm.DisplayName,
                    Credentials: JSON.stringify(itsm.UserName,
                                                itsm.Password),
                    Url: itsm.URL,
                    Settings: JSON.stringify(itsm.ResolveAlerts ? itsm.ResolveAlerts : false,
                                             itsm.AcknowledgeAlerts ? itsm.AcknowledgeAlerts : false,
                                             itsm.SyncInterval,
                                             itsm.IncidentInterval,
                                             itsm.Status ? itsm.Status : "")
                }
            }
        });
    }

在后端:当调用dto时,dto始终为空。

代码语言:javascript
复制
public async Task<IHttpActionResult> Update(int id, [FromBody] SourceDto dto)
    {
        var source = Mapper.Map<Source>(dto);
        source.SourceID = id;
        source.ServerCount = "";
        var res = await SystemActors.SourceManager.Ask(new UpdateSource(source));

        var failure = res as Status.Failure;
        if (failure != null)
        {
            return InternalServerError();
        }
        var success = ((SqlResult<object>) res).Success;
        if (!success)
        {
            return Content(HttpStatusCode.BadRequest, "Failed to update source.");
        }

        return Ok(new ResponsePackage {Success = true});
    }

这是SourceDto类:

代码语言:javascript
复制
public class SourceDto
{
    public string ConnectorType { get; set; }
    public string SourceName { get; set; }
    public string DisplayName { get; set; }
    public string Credentials { get; set; }
    public string Url { get; set; }
    public string Settings { get; set; }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 20:47:03

您的前端数据格式有点错误-- data参数应该是您的ASP.NET控制器在[FromBody]SourceDto模型中期望的对象,而id应该是一个查询字符串:

代码语言:javascript
复制
    method: "POST",
        url: "api/sources/" + itsm.Id,
        data: {
                ConnectorType: itsm.Type,
                SourceName: itsm.ServerName,
                DisplayName: itsm.DisplayName,
                Credentials: JSON.stringify(itsm.UserName,
                                            itsm.Password),
                Url: itsm.URL,
                Settings: JSON.stringify(itsm.ResolveAlerts ? itsm.ResolveAlerts : false,
                                         itsm.AcknowledgeAlerts ? itsm.AcknowledgeAlerts : false,
                                         itsm.SyncInterval,
                                         itsm.IncidentInterval,
                                         itsm.Status ? itsm.Status : "")
        }
    });

ASP.NET将将请求体应用于预期的模型--如果它不匹配,您将得到null

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43792431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档