Quantcast
Channel: ASP.NET AJAX + Ajax Control Toolkit (ACT)
Viewing all articles
Browse latest Browse all 5678

how to pass a datetime within an object via JSON in an ajax request ?

$
0
0

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


Viewing all articles
Browse latest Browse all 5678


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>