Senden JSON Datum zum WCF-Dienst
Will ich post json-Objekt zu meinem WCF-service
Mein problem ist nur seine date-Eigenschaft. Bekomme ich das Datum aus einem jquery datepicker und ich will es in meinem Dienst als c# datetime.
Mein service:
namespace Employee
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
bool UpdateEmployee(Employee Employee);
}
}
Und dieser Mitarbeiter ist:
[DataContract]
public class Employee
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Department { get; set; }
[DataMember]
public int Salary { get; set; }
[DataMember]
public DateTime Hired { get; set; }
}
Alle anderen Eigenschaften funktionieren. Ich brauche nur meine konvertieren Datums-string zu json Datum.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erwarteten format für
DateTime
Objekt ist nicht das format zurückgegeben, indem die jQuery Datumsauswahl. WCF erwartet das Datum in der ASP.NET format (z.B.\/Date(1234567890)\/
).Können Sie andere Formate verwenden, obwohl, aber es ist nicht einfach (zumindest nicht, bis .NET 4.0; auf 4.5 habe dadurch viel besser). Im Grunde, die Sie verwenden würden, eine string-Eigenschaft (kann privat sein, wenn Ihr service ist mit voller Vertrauenswürdigkeit ausgeführt wird), mit denen Sie den Wert aus den Draht, dann Haken Sie es bis zu einem
DateTime
- Eigenschaft während der Serialisierung Episoden. Es gibt mehr Informationen zu diesem trick zu http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks.aspx, und Sie können sehen Sie auf den folgenden code ein.Und den jQuery-Aufruf:
Sollten Sie versuchen, ändern Sie die Eigenschaft
BodyStyle = WebMessageBodyStyle.Wrapped
zuBodyStyle = WebMessageBodyStyle.Bare
. Diese Art der Rahmen sich nicht fügt keine zusätzliche XML-Dekorationen.Außerdem sollten Sie überprüfen Sie das Datum-format kommt vom client.
Vielleicht sollten Sie senden Sie vom client in einem voreingestellten format und dann eine string-Eigenschaft des Objekts, sondern als ein DateTime ein.
Können Sie eine nur-lese-Eigenschaft, die konvertiert das Datum-string in einen DateTime-Wert, mit dem bereits bekannten format.