web-dev-qa-db-ja.com

Ajax呼び出しからMVCに日付値を渡す

MY Ajax呼び出し

 $('#QuickReserve').click(function () {
        var now = new Date();
        alert(now);

        var _data = {
            'ComputerName': _computerName,
            '_mStart': now.toTimeString(),
            '_mEnd': now.toDateString()
        };
        $.ajax({
            cache: false,
//            contentType: "application/json; charset=utf-8",
            type: "POST",
            async: false,
            url: "/Home/SetMeeting",
            dataType: "json",
            data: _data,
            success: "",
            error: function (xhr) {
                alert("Error");
                alert(xhr.responseText);
            }
        });
    });

MY C#コード

 public ActionResult SetMeeting(string ComputerName, DateTime? _mStart, DateTime? _mEnd)
        {
           }

DateTime値は、コード終了時に受信されません。 jqueryで私がしようとしたとき

'_mStart': now.toTimeString(),
            '_mEnd': now.toDateString()

to datestringは今日の日付を返しますが、日付時刻の時刻部分も必要です。

32
Nanu

データ形式でトリックを行わないでください。標準関数 date.toISOString() を使用するだけで、ISO8601形式で返されます。

javaScriptから

$.post('/example/do', { date: date.toISOString() }, function (result) {
    console.log(result);
});

c#から

[HttpPost]
public JsonResult Do(DateTime date)
{
     return Json(date.ToString());
}
71
rnofenko

Json日付をこの形式「mm/dd/yyyy HH:MM:ss」に変換することは、トリック全体です。dateFormatは、 http://blog.stevenlevithan.com/archivesにあるjsondate format.jsファイルの関数です。/date-time-format

var _meetStartTime = dateFormat(now, "mm/dd/yyyy HH:MM:ss");
12
Nanu

1つのDateTimeを渡して、サーバー上の日付部分と時刻部分を分離することはできませんか?

'_mDate'を渡すだけではできませんか:今;

public ActionResult SetMeeting(string ComputerName, DateTime? _mDate)
{
   // Then in here use _mDate.Date, and _mDate.Time    
}
1
ETFairfax

なぜ日付(および時刻)をUnixエポックのタイムスタンプに変換し、jsを使用して日付を表示しないのですか?

c#

public double FromUnixEpoch(DateTime value)
{
    DateTime unixEpoch = new DateTime(1970, 1, 1);
    double timeStamp = (value - unixEpoch).Ticks / 1000;
    return timeStamp;
}

js

var myDate = new Date( object.myEpochDate *1000);
myDate.toUTCString().toLocaleString();

このアプローチを使用すると、エポックをjson内の文字列として渡し、jsの日付のように処理できます。

1
gnome

フォーマットに関係しています。あなたは間違いなくライブラリまたはプラグインを使用することができます、私はそれを本当にシンプルに保つことにしました:

function getFormattedDate(date) {
  var curr_date = date.getDate();
  var curr_month = date.getMonth() + 1; //Months are zero based
  var curr_year = date.getFullYear();
  return curr_date + "-" + curr_month + "-" + curr_year;          
}

接吻!

0
Jowen