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