我收到一条错误消息,“序列不包含任何元素”,同时试图通过使用“AspNet”传递两个模型参数,将SQL中的表从角7更新到http.post核心控制器。
我将数据从表单传递到类模型,没有问题,因为我可以在浏览器控制台中看到有效负载数据。但是,当试图将模型作为参数在我的api服务中传递给控制器时,模型中的所有参数都为空。当通过一个模型parm时,我通常没有问题,但是将其中两个模型传递到我的控制器上,使用FromBody似乎不想为我工作。
我试图用花括号包装这些模型,以传递它们,但没有结果:
UpdateService(serviceAddress: ServiceAddressModel, contact: ContactModel) {
let reqHeader = new HttpHeaders();
let body = { svc: serviceAddress, cnt: contact };
reqHeader.append('Content-Type', 'application/json');
return this.http.post(this.baseurl + 'api/customermanagement/update-service-address-info', body, { headers: reqHeader });当我在浏览器控制台中查看请求/响应时,我可以看到有效负载中的数据,因此我知道数据已经准备好传递。
我的控制器设置如下:
       [Route("update-service-address-info")]
    public bool UpdateServiceAddressAccount([FromBody] ServiceAddressEntity svc_id, [FromBody] ContactEntity cnt_id)
    {
        return serviceAddressService.UpdateServiceAddressAccount(svc_id, cnt_id);
    }在此调用中使用断点显示所有值的空值。
如果我能正确地把参数传递给我的界面,我应该是好的。我感觉到我没有在http.post体中正确地构造参数。
发布于 2019-06-18 13:03:37
您的请求主体,{ svc: serviceAddress, cnt: contact }作为json字符串接收,例如{"svc":{"serviceAddressProperty1":"value",...},"cnt":{"contactProperty1":"value",...}}。操作方法的参数通过默认的模型绑定机制绑定(除非提供自己的自定义模型绑定实现)。默认机制试图通过从与请求一起接收的json对象的顶层绑定来创建实例。简单地说,让我们假设enter code here类ServiceAddressModel的定义如下:
public class ServiceAddressModel
{
   public string Name { get; set; }
   public string Property2 { get; set; }
}模型绑定器在json树的顶层查找名称为"name"和"property2"的属性。如果找到,它们将绑定到创建的实例的Name和Property2属性。在您的示例中,将模型包装在一个类中,这样可以使svc_id和cnt_id成为顶级属性,这样可以很好地工作。就像这个例子:
public class MyRequest
{
     public ServiceAddressModel svc_id { get; set; }
     public ContactEntity cnt_id { get; set; }
}然后,您可以声明您的行动如下
 [Route("update-service-address-info")]
public bool UpdateServiceAddressAccount([FromBody] MyRequest request)
{
    return serviceAddressService.UpdateServiceAddressAccount(request.svc_id, request.cnt_id);
}默认情况下,蛇套,骆驼套应该被允许(你必须试一试,我还没有测试过那部分)。也就是说,如果您将属性声明为SvcId和CntId (如果您更喜欢更自然的C#命名约定),它应该能够正确地从JSON与"svc_id"或"cnt_id"绑定。
另一种选择是实现自定义模型绑定,但这可能是一个更长、更复杂的路径。
希望这能有所帮助。
发布于 2019-06-18 12:59:12
只需尝试像这样传递值,然后看到
设body ={ svc_id:serviceAddress,cnt_id:contact };
https://stackoverflow.com/questions/56649067
复制相似问题