L’objectdatasource ignora la cultura quando aggiorna un business object

Se state usando un objectdatasource agganciato ad un vostro adapter custom, potreste incorrere in spiacevoli incovenienti quando si tratta aggiornare delle proprietà sensibili alla cultura (es: campi  DateTime).

Quello che succede è che benché l’interfaccia utente possiate averla impostata in una certa cultura – es: italiano – l’objectdatasource quando raccoglie i dati dai controlli tenta di convertirli usando la cultura invariante, generando errori tipo:

Cannot convert value of parameter XXX from 'System.String' to 'System.DateTime'

Il workaround è semplice: basta specificare esplicitamente I parametri sensibili alla cultura nella definizione dell’objectdatasource (cosa che normalmente è opzionale utilizzando un business object) ad esempio:

<InsertParameters>
    <asp:Parameter Name="PublishedFrom" Type="DateTime" />
    <asp:Parameter Name="PublishedTo" Type="DateTime" />
</InsertParameters>
  <UpdateParameters>
    <asp:Parameter Name="PublishedFrom" Type="DateTime" />
    <asp:Parameter Name="PublishedTo" Type="DateTime" />
  </UpdateParameters>

In questo modo, per qualche oscura ragione, l’objectdatasource effettua correttamente le conversioni.

Published venerdì 10 settembre 2010 14.18 by marcodelgatto
Filed under: ,

Comments

# re: L’objectdatasource ignora la cultura quando aggiorna un business object

venerdì 14 gennaio 2011 12.47 by mariano
2 ore di ricerche per cercare la soluzione a questo problema.. e questa che è la più semplice non veniva fuori! Thanks

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Powered by Community Server (Commercial Edition), by Telligent Systems