Hello,
I am using mvc4/razor/jquery/ajax/json. I have the following class :
namespace Web.Models { public class TransactionFilter { public TransactionFilter() { TransactionBeginTradeDateCriteria = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 1, 1, 1); TransactionMarketCriteria = int.Parse(ConfigurationManager.AppSettings["DefaultMarketID"]); } public DateTime? TransactionBeginTradeDateCriteria { get; set; } public DateTime? TransactionEndTradeDateCriteria { get; set; } public DateTime? TransactionBeginSettlementDateCriteria { get; set; } public DateTime? TransactionEndSettlementDateCriteria { get; set; } public int? TransactionMarketCriteria { get; set; } [Isin(ErrorMessage = "Isin code is not correct.")] public string TransactionISINCriteria { get; set; } } }
Then I have a razor page Index.cshtml :
<script type="text/javascript">$(function () {$.ajax({ type: "POST", url: '@Url.Action("IndexPartial")', data: JSON.stringify(@Html.Raw(Json.Encode(Session["TransactionFilter"] as Web.Models.TransactionFilter))), datatype: 'json', contentType:"application/json; charset=utf-8", success: function (response) {$("#Container").html(response); }, error: function (xhr, ajaxOptions, thrownError) { alert("An error occured at " + (new Date()).toString()); } }); });</script>
And my MVC controller :
namespace Web.Controllers { public class TransactionController : Controller { ... public ActionResult IndexPartial(TransactionFilter tfArg) { TransactionFilter tf = new TransactionFilter(); tf.TransactionBeginTradeDateCriteria = tfArg.TransactionBeginTradeDateCriteria; tf.TransactionEndTradeDateCriteria = tfArg.TransactionEndTradeDateCriteria; tf.TransactionBeginSettlementDateCriteria = tfArg.TransactionBeginSettlementDateCriteria; tf.TransactionEndSettlementDateCriteria = tfArg.TransactionEndSettlementDateCriteria; tf.TransactionMarketCriteria = tfArg.TransactionMarketCriteria; if (!string.IsNullOrEmpty(tfArg.TransactionISINCriteria)) tf.TransactionISINCriteria = tfArg.TransactionISINCriteria; else tf.TransactionISINCriteria = null; Session["TransactionFilter"] = tf; Tuple<ISingleResult<sel_transactionsResult>, TransactionFilter> tuple = new Tuple<ISingleResult<sel_transactionsResult>, TransactionFilter>(DataProvider.GetTransactions(Convert.ToInt32(Session["CustomerOID"]), tf), tf); return PartialView("IndexPartialView", tuple); } ... } } }
My problem is that the date that I set in TransactionBeginTradeDateCriteria is the 29th of March 2013, but on the server side, this value is null (just for the date, I mean the object TransactionFilter has been correctly transferred an recreated, except for the Datetime values).
When I debug, I can see that the value of the ajax argument is :
data: JSON.stringify({"TransactionBeginTradeDateCriteria":"\/Date(1364511600000)\/","TransactionEndTradeDateCriteria":null,"TransactionBeginSettlementDateCriteria":null,"TransactionEndSettlementDateCriteria":null,"TransactionMarketCriteria":292104,"TransactionISINCriteria":null}),
So, it does have a value, but the server receives null for TransactionBeginTradeDateCriteria. Do you have any idea what I have to do to pass correctly a datetime winthin my object via JSON ?
Thanks in advance,
Julien