2014-01-31 4 views
0

Я пишу метод в службе обслуживания wcf. Метод - метод get, а параметр - дата. Как я использую параметры в качестве службы в jquery.WCF REST Параметры

Если я использую templateUri, он должен быть строкой. Пример:

[WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "/GetProductionDay/{shiftDate}")] 

В противном случае я могу использовать строку запроса DateTime как строку запроса. Пример:

[WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "/GetProductionDay?shiftDate={shiftDate}")] 

Какой из них подходит? Подобно этому у меня есть несколько параметров с int, datetime и т. Д. Поэтому, если я пойду первым, все вещи должны быть строковыми. я прав? Если я следую за вторым, какие-либо проблемы в любом типе?

+0

Просто наблюдение - вы можете найти его проще использовать новый Web API, а не простой ПР»WCF - увидеть это SO вопрос ... http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api – Jay

+0

good yougfht на самом деле я тоже думаю об этом. Но я очень новичок в модели mvc, а также никто не помогает мне в моем офисе – Akhil

ответ

0

В таких случаях я обычно использую представление даты UTC (количество секунд/мс от 01.01.1970). На стороне JavaScript это может быть получить как

var utc = new Date().getTime()/1000; 

На стороне сервера он может управляться с помощью следующей логики:

public static class DateTimeExtensions 
{ 
    static readonly DateTime _unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 

    static readonly double _maxUnixSeconds = (DateTime.MaxValue - _unixEpoch).TotalSeconds; 

    /// <summary> 
    /// Converts .NET <c>DateTime</c> to Unix timestamp used in JavaScript 
    /// </summary> 
    /// <param name="dateTime">DateTime to convert</param> 
    /// <returns>Unix timestamp in seconds</returns> 
    public static long ToUnixTimestamp(this DateTime dateTime) 
    { 
     return (long)(dateTime - _unixEpoch).TotalSeconds; 
    } 


    public static DateTime FromUnixTimestamp(long seconds) 
    { 
     return _unixEpoch.AddSeconds(seconds); 
    } 

    public static DateTime? FromUnixTimestamp(string seconds) 
    { 
     long secondsNo; 
     if(String.IsNullOrEmpty(seconds) || !long.TryParse(seconds, out secondsNo)) 
     { 
      retun null; 
     } 

     return _unixEpoch.AddSeconds(secondsNo); 
    } 
} 

Используя этот loigc можно преобразовать все даты в простые числа на стороне клиента и использовать DateTime ? на стороне сервера, чтобы правильно работать с пустыми датами

[WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "/GetProductionDay/{shiftDate}")] 
public int GetProductionDay (string shiftDate) 
{ 
    DateTime? dt = DateTimeExtensions.FromUnixTimestamp(shiftDate); 
    .... 
    return res; 
} 

Некоторые подробнее: How to convert a Unix timestamp to DateTime and vice versa?

+0

хорошо, но если мне нужно передать конкретные данные без возможности использовать это. например: '25/12/2013 ' – Akhil

+0

Я могу использовать этот и работать. Но моя путаница в объекте даты. new Date() представляют UTC, то как я даю конкретную дату для отправки, как мой выше комментарий – Akhil

Смежные вопросы