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'は' DateTime'に変換できません) –
@StephenMueckeは、質問された質問のコントローラアクションコードを親切にチェックしています。あなたのreferemcesのためにそれを更新しました。 –
あなたはコントローラコードとは関係がありません。あなたは 'fromDate'の値はOKですが、' toDate'の値はそうではないと言いました。 val()= 0 "$ 0" $( "#ToDate")。val(); 'は返り値を返します。テキストボックスが空の場合は '0'に変換します(これは全く意味がありません) –