Mentre giocavo con i nuovi strumenti di applicazione di pagine singole di MVC 4, ho notato che nessuno degli esempi che ho trovato contiene un esempio di un DateTime in fase di aggiornamento tramite WebApi. Ho presto scoperto perché.MVC 4 Pagina singola Applicazione e DateTime
Ho iniziato generando la SPA standard dal modello fornito. Ho quindi aperto TodoItem.cs e aggiunto un campo DateTime. Quindi ho generato il controller come indicato dai commenti. (Senza il campo datetime, tutto funziona bene).
Dopo aver generato tutto, ho avviato l'app e sono passato all'indice del controller (ho chiamato il controller "tasks"). Ho ottenuto la pagina della griglia con 0 record come previsto e ho fatto clic sul pulsante Aggiungi. Sono stato portato alla pagina di modifica come previsto e inserito alcuni dati tra cui una data nel mio nuovo campo datetime brillante. Quindi fatto clic su Salva.
Un errore è stato prodotto che ha detto:
Server error: HTTP status code: 500, message: There was an error deserializing the object of type System.Web.Http.Data.ChangeSetEntry[]. DateTime content '01/01/2012' does not start with '/Date(' and end with ')/' as required for JSON.
sembrerebbe che l'attrezzatura non supporta DateTime ancora. Sono sicuro che potrei passare e passare un po 'di tempo a capire come farlo funzionare, ma ho pensato che potrei trovare un po' di fortuna qui con qualcuno che ha già risolto questo problema e può fornire informazioni utili.
Chiunque ha già combattuto questo?
Aggiornamento: Sto aggiungendo ulteriori informazioni che ho trovato da quando ho chiesto questo. Ho provato a utilizzare JSON.Net come mio Formatter come suggerito di seguito. Penso che questa sarà la soluzione finale, tuttavia, solo facendo come suggerito il poster qui sotto non è sufficiente.
Quando si utilizza il serializzatore JSON.Net, ottengo il seguente errore:
This DataController does not support operation 'Update' for entity 'JObject'.
La ragione è che JSON.Net non inserisce pienamente l'oggetto che il formattatore sta cercando di deserailize a (Sistema. Web.Http.Data.ChangeSet).
Il json che viene inviato in è:
[{"Id":"0",
"Operation":2,
"Entity":
{"__type":"TodoItem:#SPADateProblem.Models",
"CreatedDate":"/Date(1325397600000-0600)/",
"IsDone":false,
"Title":"Blah",
"TodoItemId":1},
"OriginalEntity":
{"__type":"TodoItem:#SPADateProblem.Models",
"CreatedDate":"/Date(1325397600000-0600)/",
"IsDone":false,
"Title":"Blah",
"TodoItemId":1}
}]
costruito in JSON Formatter è in grado di ricostituire questo JSON in un oggetto changeset con oggetti TodoItem embeded nell'entità e campi OriginalEntity.
Qualcuno ha ottenuto che JSON.Net lo deserializzi correttamente?
Mostrare del codice che consente di riprodurre il problema potrebbe essere davvero utile. –
Purtroppo, avrei bisogno di fornire l'intera soluzione. Il modello di applicazione per pagina singola fornito genera molto codice. Per riprodurre l'errore, è sufficiente creare una nuova applicazione per pagina singola MVC 4. Una volta terminata la lavorazione, aprire TodoItem.cs e aggiungere un campo datetime. Quindi fai clic con il pulsante destro del mouse su "Controller" e aggiungi un controller. Scegli un nome per esso, seleziona TodoItem come modello, il modello SPA e lascia che crei un nuovo contesto. Una volta fatto, esegui l'applicazione e vai al nuovo controller. Fare clic su Aggiungi e immettere i dati, quindi fare clic su Salva. –