将数据发布到web api方法时,日期格式更改为“mm / dd / yyyy”

时间:2012-10-22 07:30:57

标签: asp.net-mvc datetime post asp.net-mvc-4 asp.net-web-api

我正在使用ASP.NET MVC 4和Web API。

我希望能够在点击按钮时下载csv文件。

以下是我对api'exportfruit'的jquery调用

function downloadFile(){
var data = {
    StartDate: this.model.get('StartDate'),
    Name: this.model.get('Name')
};

var form = document.createElement('form');
form.action = 'api/fruitapi/exportFruit';
form.method = 'POST';
form.style.display = 'none';
for (i in data) {
    if (data[i] != "") {
        var inputElement = document.createElement('textarea');
        inputElement.name = i;
        inputElement.value = data[i];
        form.appendChild(inputElement);
    }
}
document.body.appendChild(form);
form.submit();
}

我的网络API动作如下

[ActionName("ExportFruit")]
public HttpResponseMessage PostExportFruit(SomeModel model)
{
    // for now i am just testing the value returned from model.
    string csv = "some data from db";
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new StringContent(csv);
    //a text file is actually an octet-stream (pdf, etc)
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    //we used attachment to force download
    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    result.Content.Headers.ContentDisposition.FileName = "testfile.csv";
    return result;    
}

现在我面临的问题是我将日期传递为'dd / mm / yyyy'但是在网络API动作中它将日期转换为'mm / dd / yyyy'

例如,

如果我有

之类的日期
  • 1/2/2012这将转换为2/1/2012
  • 如果22/10/2012(今天的日期)转换为01/01/0001

我该如何解决这个问题?

我在传递json数据时遇到了类似的问题,我使用this修复了这个问题但是我不知道如何处理这个问题。

请帮助我,因为互联网上几乎没有任何内容可用于此。

1 个答案:

答案 0 :(得分:1)

您可以将StartDate的类型Datetime更改为String。

然后,发布到行动,ParseExact字符串到日期时间

DateTime startDate = DateTime.ParseExact(model.StartDate, "dd/MM/yyyy", null);
DateTime endDate = DateTime.ParseExact(model.EndDate, "dd/MM/yyyy", null);