当角度http.post具有正确的值时,为什么在ASP Web API2控制器中obj值为null

Zafrul Alam |

我正在做一个小项目,用ASP WebAPI2学习Angular7。当我使用http.post()发布时,ASP Web API控制器没有收到任何值,并且obj设置为null。

我试图在应用程序的其他部分中实现类似的代码,并且工作正常。

我的WebAPI看起来像这样-

        [Route("api/rota/InsertRota")]
        [HttpPost]
        public HttpResponseMessage InsertRota(Models.HelpdeskStaffRota paraStaffRota)
        {
            try
            {
                string conString = ConfigurationManager.ConnectionStrings["HelpdeskStaffRota"].ConnectionString;
                using (SqlConnection conn = new SqlConnection(conString))
                using (SqlCommand comm = new SqlCommand("RotaInsert", conn))
                {
                    conn.Open();
                    comm.CommandType = System.Data.CommandType.StoredProcedure;

                    comm.Parameters.Add(new SqlParameter("@RotaDate", paraStaffRota.RotaDate));
                    comm.Parameters.Add(new SqlParameter("@RotaMorning", paraStaffRota.RotaMorning));
                    comm.Parameters.Add(new SqlParameter("@RotaLunch", paraStaffRota.RotaLunch));
                    comm.Parameters.Add(new SqlParameter("@RotaLate", paraStaffRota.RotaLate));
                    comm.ExecuteNonQuery();
                    conn.Close();
                }
                List<Models.HelpdeskStaffRota> items = GetItems();
                return Request.CreateResponse(HttpStatusCode.OK, items);
            }
            catch (System.Exception e)
            { return Request.CreateResponse(HttpStatusCode.SeeOther, e.Message); }
        }

和asp模型-

    public class HelpdeskStaffRota
    {
        public Int64 Id { get; set; }

        [Required(ErrorMessage = "Please select a date")]
        public DateTime RotaDate { get; set; }

        [Required(ErrorMessage = "Please select a Staff for Morning")]
        public string RotaMorning { get; set; }

        [Required(ErrorMessage = "Please select a Staff for Lunch")]
        public string RotaLunch { get; set; }

        [Required(ErrorMessage = "Please select a Staff for Late")]
        public string RotaLate { get; set; }

        public string RotaDateString {
            get
            {
                return this.RotaDate.ToString("dd/MM/yyyy");
            }
            set
            {
                this.RotaDate = DateTime.ParseExact(value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            }


        }


    }

和Angular服务-

  addRota(rota: Rota) {
    const addRotaURL = `${this.baseURL}api/rota/InsertRota`;
    return this.http.post(addRotaURL, rota);
  }

和Angluar Rota类-

export class Rota {
    Id: number;
    RotaDate: Date;
    RotaMorning: string;
    RotaLunch: string;
    RotaLate: string;
}

如果我进入调试模式,则可以看到角度代码确实设置了对象值,并且可以看到它碰到了控制器内部的断点,但是paraStaffRota的值为null。我的期望是paraStaffRota(web api controller)= rota(从角度发布)。

任何帮助将不胜感激。

Zafrul Alam |

对于那些正在寻找一种更好的方法的人-

我认为使用自定义日期适配器将是一种更好,更干净的方法。我做了以下。

import { Injectable } from '@angular/core';
import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';

@Injectable({
  providedIn: 'root'
})
export class DateStringService {

    constructor() { }

    fromModel(value: string): NgbDateStruct {
        if (!value) {
            return;
        }

        let segments = value.split('-');
        let dateObj = {
            year: Number(segments[0]),
            month: Number(segments[1]),
            day: Number(segments[2])
        };

        return dateObj;
    }

    toModel(date: NgbDateStruct): string {
        if (!date) {
            return;
        }

        return `${date.year}-${date.month}-${date.day}`;
    }
}

然后在app.module.ts-中使用它

    providers: [
        { provide: NgbDateAdapter, useClass: DateStringService }
    ],

而已。就行了!您无需在其他任何地方进行任何更改。Angular将从这里开始。它对我有用,我发现这种方法比以前的方法更好,更干净。希望能有所帮助。如果您遇到更好的解决方案,请在此处分享。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的角度控制器没有命中Web Api控制器?

来自分类Dev

使用角度$ http获取与ASP Net Web API

来自分类Dev

在ASP.Net Web Api 2控制器中为angularjs $ http.get使用自定义方法的替代方法

来自分类Dev

Angular2 $ http获取具有路由属性的Web api控制器的请求

来自分类Dev

在AngularJS和Web API 2中,通过http发布接收的值为null

来自分类Dev

在使用Web API时,对预检的响应在我的角度项目中具有无效的http状态代码404

来自分类Dev

AngularJS $ http.post()将null发送到ASP.NET Web API控制器方法

来自分类Dev

带有 System.Web.Http API 控制器的 ASP WebForms-控制器中的构造函数依赖注入不起作用

来自分类Dev

在 asp.net core web api 控制器中读取表单数据时出现 405 http 错误

来自分类Dev

Web API控制器,RESTful Web方法。(使用角度)

来自分类Dev

HTTP 请求未命中 WEB API 2 控制器

来自分类Dev

带有简单类型参数的AngularJS $ http.post到ASP.NET Web API控制器

来自分类Dev

具有空参数的$ http.get不会影响Web API控制器

来自分类Dev

承诺的角度$ http.post值

来自分类Dev

为什么 Angularjs POST 请求后 Angular Web API 后端控制器中的数据总是为空?

来自分类Dev

从 ASP.Net 核心 Web API 中的后请求在基本控制器中分配值

来自分类Dev

在ASP.Net Web API2中的angularjs服务调用的$ http POST请求期间使用条件URL

来自分类Dev

在ASP.NET 5中为Web API控制器模拟HttpContext

来自分类Dev

WEB API2获取POST请求JSON数组值

来自分类Dev

如何将DateTime值发布到Web API 2控制器

来自分类Dev

在调用具有基本类型参数的 .NET Core Web API 控制器时,无法将派生类作为参数从角度代码发布

来自分类Dev

具有CORS和AttributeRouting的ASP.NET Web API2不允许HTTP PUT

来自分类Java

验证Spring Boot控制器中HTTP POST请求中的请求主体是否为null

来自分类Dev

Web API控制器方法执行到结束。没有HTTP响应。挂起

来自分类Dev

ASP.NET MVC 6中的MVC控制器和Web API控制器有什么区别?

来自分类Dev

忽略ASP.NET Web API中的控制器

来自分类Dev

ASP.NET Web API中具有多个GET方法的单个控制器

来自分类Dev

从http分配值以响应角度变量

来自分类Dev

从$ http .then()角度函数内返回值

Related 相关文章

  1. 1

    为什么我的角度控制器没有命中Web Api控制器?

  2. 2

    使用角度$ http获取与ASP Net Web API

  3. 3

    在ASP.Net Web Api 2控制器中为angularjs $ http.get使用自定义方法的替代方法

  4. 4

    Angular2 $ http获取具有路由属性的Web api控制器的请求

  5. 5

    在AngularJS和Web API 2中,通过http发布接收的值为null

  6. 6

    在使用Web API时,对预检的响应在我的角度项目中具有无效的http状态代码404

  7. 7

    AngularJS $ http.post()将null发送到ASP.NET Web API控制器方法

  8. 8

    带有 System.Web.Http API 控制器的 ASP WebForms-控制器中的构造函数依赖注入不起作用

  9. 9

    在 asp.net core web api 控制器中读取表单数据时出现 405 http 错误

  10. 10

    Web API控制器,RESTful Web方法。(使用角度)

  11. 11

    HTTP 请求未命中 WEB API 2 控制器

  12. 12

    带有简单类型参数的AngularJS $ http.post到ASP.NET Web API控制器

  13. 13

    具有空参数的$ http.get不会影响Web API控制器

  14. 14

    承诺的角度$ http.post值

  15. 15

    为什么 Angularjs POST 请求后 Angular Web API 后端控制器中的数据总是为空?

  16. 16

    从 ASP.Net 核心 Web API 中的后请求在基本控制器中分配值

  17. 17

    在ASP.Net Web API2中的angularjs服务调用的$ http POST请求期间使用条件URL

  18. 18

    在ASP.NET 5中为Web API控制器模拟HttpContext

  19. 19

    WEB API2获取POST请求JSON数组值

  20. 20

    如何将DateTime值发布到Web API 2控制器

  21. 21

    在调用具有基本类型参数的 .NET Core Web API 控制器时,无法将派生类作为参数从角度代码发布

  22. 22

    具有CORS和AttributeRouting的ASP.NET Web API2不允许HTTP PUT

  23. 23

    验证Spring Boot控制器中HTTP POST请求中的请求主体是否为null

  24. 24

    Web API控制器方法执行到结束。没有HTTP响应。挂起

  25. 25

    ASP.NET MVC 6中的MVC控制器和Web API控制器有什么区别?

  26. 26

    忽略ASP.NET Web API中的控制器

  27. 27

    ASP.NET Web API中具有多个GET方法的单个控制器

  28. 28

    从http分配值以响应角度变量

  29. 29

    从$ http .then()角度函数内返回值

热门标签

归档