【问题标题】:Get request with dates as parameter Angular 8 (ts) + .NET Core获取以日期为参数的请求 Angular 8 (ts) + .NET Core
【发布时间】:2025-12-02 03:55:02
【问题描述】:

我尝试在获取请求中发送 2 个日期作为参数,但我只得到这个:

型号

    public class Dates
{
    public DateTime from { get; set; }
    public DateTime to { get; set; }
}

.net 核心

 [HttpGet]
    [Route("main/exportToExcel")]
    public string ExportToExcel([FromQuery] Dates dates)
    {}

HTML

  <p>
    <mat-form-field color="accent" appearance="fill">
      <mat-label>Data od</mat-label>
      <input formControlName="from" matInput [matDatepicker]="picker1">
      <mat-datepicker-toggle matSuffix [for]="picker1"></mat-datepicker-toggle>
      <mat-datepicker #picker1></mat-datepicker>
    </mat-form-field>

  </p>

  <p>
    <mat-form-field color="accent" appearance="fill">
      <mat-label>Data do</mat-label>
      <input formControlName="to" matInput [matDatepicker]="picker2">
      <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
      <mat-datepicker #picker2></mat-datepicker>
    </mat-form-field>

  </p>
</form>

角度

 let params = new HttpParams();
  params = params.append('from', this.datepipe.transform(this.addNewItemForm.get('from').value, 'yyyy-mm-dd'));
  params = params.append('to', this.datepipe.transform(this.addNewItemForm.get('to').value, 'yyyy-mm-dd'));
  console.log(params);

  this.http.get(this.baseURL + "main/exportToExcel/", { params })
    .subscribe(event => {

这是正确的做法吗?

【问题讨论】:

  • 嗨@Xia,您似乎没有得到正确的日期,对吗?您在asp.net core、angular 或angular.js 中使用了什么?
  • 嗨,是的,我更新了问题。对不起:)
  • 嗨@Xia,console.log(params) 记录的日期是否正确?
  • 是的。我添加了第二张可以看到的照片:/
  • 如果我硬编码并传递一个像“2019-8-4”这样的日期,它工作得很好。你对this.addNewItemForm.get('to').value做得怎么样?你能分享更多代码吗?

标签: angular .net-core angular-material httprequest


【解决方案1】:

您可以像这样轻松地使用 JavaScript toISOString() 方法:

let date = new Date(this.form.value.date).toISOString();

这将为您提供日期作为时间戳,然后您可以将其发送到您的 API

但首先,你需要正确设置formControlNname,然后发送值

【讨论】:

    【解决方案2】:

    好的,问题就是格式不好。

      import * as moment from 'moment';
    
      var momentVariable = moment(this.addNewItemForm.get('from').value, 'MM-DD-YYYY');
      var from = momentVariable.format('YYYY-MM-DD');
    
      var momentVariable = moment(this.addNewItemForm.get('to').value, 'MM-DD-YYYY');
      var to = momentVariable.format('YYYY-MM-DD');
    
    
      let params = new HttpParams();
      params = params.append('from', from);
      params = params.append('to', to);
    
    
     this.http.get(this.baseURL + "main/exportToExcel/", { params, responseType: 'text' })
      .pipe(map((data: string) => data),
        catchError(this.errorHandler)
      );
    

    c#

        [HttpGet]
        [Route("main/exportToExcel")]
        public string ExportToExcel([FromQuery] Dates dates)
        {
    

    【讨论】: