【发布时间】:2017-02-18 05:40:00
【问题描述】:
我正在尝试通过对 mvc 控制器 jsonresult 类型操作方法的 ajax 调用使用 json.stringify() 方法传递多个参数,包括 2 个日期时间类型参数。 所有参数值均已成功传递。从 2 个日期时间类型参数中,第一个值传递成功,但第二个参数值变为空!
下面是我的代码。
javascript代码:
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);
});
}
}
});
控制器代码如下:
[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)
};
}
我也尝试过更改参数名称,但结果相同。
【问题讨论】:
-
价值观是什么,如果你的服务器上的文化怎么办? (如果它们是
null(0无法转换为DateTime),您将通过将值设置为0来尝试做什么 -
@StephenMuecke 请检查所问问题中的控制器操作代码。我已经更新了它供您参考。
-
您的控制器代码与它无关。你说过
fromDate的值可以通过,但toDate的值不是。所以它在您看来是问题的代码(我们不知道var ToDate = $('#ToDate').val() == "" ? 0 : $("#ToDate").val();返回什么,或者如果文本框为空(这根本没有意义),为什么在世界上将其转换为0
标签: jquery ajax asp.net-mvc-4 datetime