2010-03-22 20 views
8

Ho recentemente studiato i metodi di creazione di moduli basati sul Web per un'applicazione Web ASP.NET che può essere modificata e gestita in fase di esecuzione. Ad esempio, un amministratore potrebbe voler aggiungere una nuova regola di convalida o una nuova serie di campi.Lato server XForms form convalida e integrazione in ASP.NET

Il Santo Graal fornirebbe un mezzo per specificare una forma insieme a regole di convalida arbitrarie (potenzialmente molto complesse) e l'assegnazione di origini dati per ogni campo. La specifica verrebbe quindi utilizzata per aggiornare il modulo distribuito nell'applicazione Web che quindi convalidere le richieste sia sul lato client che sul lato server.

Le mie indagini mi hanno portato a Xforms e a numerose tecnologie che lo supportano. Una soluzione sembra essere IBM Lotus Forms, ma ciò richiede un investimento molto grande in termini di infrastruttura, il che lo rende impossibile, sebbene il progettista di moduli possa essere utile come strumento autonomo per la creazione dei moduli. Ho anche scontato i plug-in del browser in quanto il modulo deve essere visibile pubblicamente e compatibile con browser.

Ho notato che ci sono numerose librerie javascript che forniscono implementazioni lato client dati uno schema Xforms. Questi fornirebbero una soluzione parziale, ma la convalida del lato server è ancora un requisito.

Un'altra opzione sembra implicare l'utilizzo di soluzioni lato server come l'applicazione Java Orbeon. Orbeon fornisce uno strumento per specificare i moduli (sebbene non ricco come Lotus Forms Designer), ma il punto più interessante è che può tradurre uno schema XForms in un modulo XHTML completo di convalida. Il fatto che sia scritto in Java non è un grosso problema se è possibile integrarsi con l'applicazione ASP.NET esistente.

Quindi la mia domanda è se qualcuno l'ha già fatto prima. Sembra un problema che avrebbe dovuto essere risolto ma è intrinsecamente molto complesso. Sembra possibile utilizzare uno strumento standard per progettare il modulo ed esportarlo in uno schema Xforms e in un modulo xhtml, e sembra possibile prendere lo schema e il modulo di xforms e pubblicarlo utilizzando una libreria laterale client. Ciò che sembra essere difficile è fornire un mezzo per convalidare l'invio dei moduli sul lato server e integrare il processo in modo appropriato con .NET (anche se sembra che la comunità .NET non si impegni con XForms, correggimi se ho torto su questo conteggio).

Sarei più che felice se un prodotto fornisca qualcosa di semplice come un servizio web che possa convalidare un'invio su uno schema. Forse Orbeon lo fa, ma sarei grato se qualcuno del sapere potesse indicarmi la giusta direzione prima di approfondire ulteriormente la mia ricerca.

Molte grazie.

+0

Ottima domanda. –

+0

@Nigel Sono consapevole che questa domanda ha più di 6 anni, ma al momento siamo nella posizione simile a quella che hai descritto. Hai avuto ulteriori esperienze con .NET e Orbeon, o con qualsiasi altro generatore di forme dinamiche? – veljkoz

risposta

0

Sono probabilmente manca qualcosa ma ...

Il modo in cui ho fatto questo genere di cose nel passaggio è quello di creare uno schema di dichiarazione forma & un XSLT per convertire tale xml in html. Puoi quindi aggiungere tutti i tipi di convalida, in base allo schema xml che hai progettato. Quello che mi manca di solito è però il progettista di moduli.

0

È possibile utilizzare XHTML per i moduli, o come suggerito da Simon, un linguaggio personalizzato come livello di astrazione. L'applicazione può caricare il modulo in fase di runtime, trasformarlo/modificarlo e servirlo all'utente. È possibile modificare il modulo e apportare modifiche senza la necessità di ricompilare/ridistribuire.

Per la convalida è possibile utilizzare Schematron, questo può anche essere facilmente modificato in fase di esecuzione utilizzando gli strumenti XML-aware.

È possibile utilizzare Javascript per produrre dati XML nel browser, oppure è possibile trasformare application/x-www-form-urlencoded in XML sul server (questo è ciò che faccio su this page).

Problemi correlati