注意*我知道第二种方法有不同的名称,但“GetConsignmentByStatusId”方法只是将它传递给'GetExportConsignment'而不做任何事情。
当从MVC应用程序传递服务时,我在.Net C#类中获得不同的日期时间。我以前搜索过,但我不熟悉JSON所以不太确定我需要看什么
这是调用服务的MVC代码。 'ConsignmentSearch'对象导致了问题。所以在这里它被序列化了。
public IEnumerable<ConsignmentInfo> LoadConsignmentByStatusId(int userId, int companyId, string language, int statusId, int pageNumber, int pageSize, ConsignmentSearch search)
{
IEnumerable<ConsignmentInfo> consignmentInfo = null;
var serializer = new JavaScriptSerializer();
string jsonInput = serializer.Serialize(search);
var content = new StringContent(jsonInput, Encoding.UTF8, "application/json");
HttpResponseMessage response = Client.PostAsync(
string.Format("Consignment/GetConsignmentByStatusId?userId={0}&companyId={1}&language={2}&pageNumber={3}&numRecs={4}&statusId={5}", userId, companyId, language, pageNumber, pageSize, statusId)
, content).Result;
if (response.IsSuccessStatusCode)
{
consignmentInfo = response.Content.ReadAsAsync<IEnumerable<ConsignmentInfo>>().Result;
}
else
{
throw new Exception(response.ReasonPhrase);
}
return consignmentInfo;
}
然后这是服务中代码的一部分。此对象中有2个日期时间字段 这与传递的内容总是不同的。我需要做些什么来阅读正确的日期?任何帮助或链接将不胜感激。
public static IEnumerable<ConsignmentInfo> GetExportConsignment(int userId, int companyId, string locale, ConsignmentSearch search, int pageNumber, int numRecs, int statusId)
{
var consignmentStatusList = new List<ConsignmentInfo>();
SQLDataAccess db = DatabaseFactory.CreateDatabase(GlobalsManager.DbConnectionString) as SQLDataAccess;
DbCommand cmd = db.GetStoredProcCommand("Logistics.spGTSConnectGetExportConsignment");
db.AddInParameter(cmd, "UserId", DbType.Int32, userId);
db.AddInParameter(cmd, "CompanyId", DbType.Int32, companyId);
db.AddInParameter(cmd, "Locale", DbType.String, locale);
if (!string.IsNullOrEmpty(search.ConsignmentNumber))
{
db.AddInParameter(cmd, "ConsignmentNumber", DbType.String, search.ConsignmentNumber);
}
if (!string.IsNullOrEmpty(search.HouseWaybillNumber))
{
db.AddInParameter(cmd, "HouseBillNumber", DbType.String, search.HouseWaybillNumber);
}
if (search.DateOfLoadingFrom != null)
{
db.AddInParameter(cmd, "DateOfLoadingFrom", DbType.DateTime, search.DateOfLoadingFrom);
}
答案 0 :(得分:0)
我找到了一个解决方案,在这里
我添加了以下方法
JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};
然后将LoadConsignmentByStatusId方法更改为此
public IEnumerable<ConsignmentInfo> LoadConsignmentByStatusId(int userId, int companyId, string language, int statusId, int pageNumber, int pageSize, ConsignmentSearch search)
{
IEnumerable<ConsignmentInfo> consignmentInfo = null;
var content = new StringContent(JsonConvert.SerializeObject(search, microsoftDateFormatSettings), Encoding.UTF8, "application/json");
答案 1 :(得分:-1)
如果您使用JS向您的服务请求/发送数据,您可以使用以下脚本来修复JSON上的日期:
function convertJsonDate(dateString) {
var date = new Date(dateString.match(/\d+/)[0] * 1);
var dd = date.getDate()
if (dd < 10) dd = '0' + dd
var mm = date.getMonth() + 1 // now moths are 1-12
if (mm < 10) mm = '0' + mm
var yy = date.getFullYear()
if (yy < 100) yy = '20' + yy
return mm + '/' + dd + '/' + yy;
}