2017-02-18 1 views
-2

json.stringify()メソッドを使用して2つのdatetime型パラメータを含む複数のパラメータを渡します。 mvc controller jsonresult型のアクションメソッドを呼び出します。 すべてのパラメータ値が正常に渡されます。 2つのdatetime型のパラメータから1番目の値は正常に渡されますが、2番目のパラメータの値はnullになります。json.stringifyを使用して2つのdatetime値を渡す場合は、ajax呼び出しのコントローラに最初に1つはdatetime形式で渡され、2つ目はnullになります。

以下は私のコードです。

var MobileNumber = $('#MobileNumber').val() == "" ? 0 : $("#MobileNumber").val(); 
    var FromDate = $('#FromDate').val() == "" ? 0 : $("#FromDate").val(); 
    var FromTime = $('#FromTime').val() == "" ? 0 : $("#FromTime").val(); 
    var ToDate = $('#ToDate').val() == "" ? 0 : $("#ToDate").val(); 
    var ToTime = $('#ToTime').val() == "" ? 0 : $("#ToTime").val(); 

$.ajax({ 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     type: "POST", 
     url: '@Url.Content("~/Merchant/GetRejectedMerchantTransactions")', 
     data: JSON.stringify({ mobileNumber: MobileNumber, fromDate: FromDate, fromTime: FromTime, toDate: ToDate, toTime: ToTime }), 
     success: function (data) { 
     $('#statusBox').removeClass('alert-danger').addClass('alert-success').show(500, function() { 
             $('#statusMessage').html(data.Message); 
            }); 
           } 
     } 
    }); 

及び制御コードは以下の通りである:JavaScriptコード

[HttpPost] 
[Authorize] 
public JsonResult GetRejectedMerchantTransactions(string mobileNumber, DateTime? fromDate, string fromTime, DateTime? toDate, string toTime) 
{ 
    List<MerchantTransactions> lstMerchantTransactions = new List<MerchantTransactions>(); 
     try 
     { 
      string shortFromDate = ""; 
      string shortToDate = ""; 
      string fromFinalDate = ""; 
      string toFinalDate = ""; 

      if (fromDate.HasValue && fromTime.Length > 1) 
      { 
       shortFromDate = fromDate.Value.ToShortDateString(); 
       fromFinalDate = shortFromDate + " " + fromTime; 
      } 

      if (toDate.HasValue && toTime.Length > 1) 
      { 
       shortToDate = toDate.Value.ToShortDateString(); 
       toFinalDate = shortToDate + " " + toTime; 
      } 

      List<TransactionStatus> lstTransactionStatus = GetTransactions(); 
      TransService.TransServiceClient transServiceClient = new TransService.TransServiceClient(); 
      TransService.GetTransactionsRequest getTransactionsRequest = new TransactionService.GetTransactionsRequest 
      { 
       MobileNumber = Convert.ToDecimal(mobileNumber), 
       FromDate = string.IsNullOrEmpty(fromFinalDate) ? fromDate : Convert.ToDateTime(fromFinalDate), 
       ToDate = string.IsNullOrEmpty(toFinalDate) ? toDate : Convert.ToDateTime(toFinalDate) 
      }; 
} 

私はまた、パラメータの名前を変更することによって試みたが、それは同じ結果を与えます。

+0

値は何ですか?サーバー上のカルチャはどうなりますか? ( '0'は' DateTime'に変換できません) –

+0

@StephenMueckeは、質問された質問のコントローラアクションコードを親切にチェックしています。あなたのreferemcesのためにそれを更新しました。 –

+0

あなたはコントローラコードとは関係がありません。あなたは 'fromDate'の値はOKですが、' toDate'の値はそうではないと言いました。 val()= 0 "$ 0" $( "#ToDate")。val(); 'は返り値を返します。テキストボックスが空の場合は '0'に変換します(これは全く意味がありません) –

答えて

0

私は自分の.cshtmlファイル内のすべてのdatetime型の値に対して新しいDate()JavaScript関数を適用することでこの問題を解決しました。

VAR FROMDATE = $( '#のFROMDATE')のような

。ヴァル()== ""? 0:新しい日付($( "#FromDate")。val()); var FromTime = $( '#FromTime')。val()== ""? 0:新しい日付($( "#FromTime")。val());

関連する問題