1

WebAPIでASP.NETMVC4を使用しています。

ボタンをクリックするだけで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();
}

私のWebAPIアクションは次のとおりです

[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」として渡していることですが、Web APIアクションでは、日付を「mm / dd/yyyy」に変換します

たとえば、

私が次のような日付を持っている場合

  • 2012年1月2日これは2012年2月1日に変換されます
  • 2012年10月22日(現在の日付)が0001年1月1日に変換された場合

これを修正するにはどうすればよいですか?

これを使って修正したjsonデータを渡すときにも同様の問題がありましたが、これをどうやって進めるのかわかりません。

これについてインターネット上で利用できるコンテンツはほとんどないので、これについて私を助けてください。

4

1 に答える 1

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);
于 2012-10-22T09:38:10.013 に答える