Domanda

Ciao, questa può sembrare una domanda strana, ma ecco la mia situazione:

Ho un modulo in cui l'utente può fare clic e aggiungere righe che contengono determinati campi di input. Questo è fatto rigorosamente sul lato client usando JQuery. Posso accedere ai valori di input sul postback sul lato asp.net usando Request.Form e il nome dei campi, il che va bene. Il problema è quando la pagina torna indietro, i campi ovviamente scompaiono. Quindi non ho modo di convalidare gli errori o altre cose. Quali sono le mie possibili soluzioni qui? Devo generare dinamicamente i campi corrispondenti sul lato server quando si verifica il postback e inserire i valori già letti nei campi generati dal lato client in modo che sia trasparente per gli utenti? È un modo per fare le cose? C'è un modo migliore?

Stavo pensando di aggiungere un metodo ajax sul lato server che restituirebbe informazioni di convalida e potrei usarlo per segnalare errori o cosa non sul lato client senza mai postare indietro, ma il pulsante che causa il postback è il " & prossimo quot; e ne ho bisogno per andare alla pagina successiva se non ci sono errori.

Sto cercando ulteriori approfondimenti che qualcuno potrebbe avere e pro e contro degli approcci.

Grazie

È stato utile?

Soluzione

Se vuoi aggiungere campi di input in modo dinamico, dovrai mantenere un hash sul lato server dei campi appena aggiunti e ri-istanziarli in Page_Init in modo che possano persistere tra i postback.

Penso che la tua idea AJAX sia buona:

  1. chiama un metodo sul lato server tramite jQuery (questo può essere un metodo statico sulla tua pagina aspx). Il metodo sul lato server aggiunge un valore di stringa a una sessione List<String> memorizzata.
  2. Chiedi al metodo di restituire il valore stringa, che è l'ID dell'elemento da aggiungere alla pagina.
  3. Aggiungi gli elementi alla tua pagina con jQuery.
  4. Utilizza la variabile di sessione per reintegrare i campi aggiunti dinamicamente al postback.

Questo metodo ti dà la velocità di aggiungere i campi sul lato client e impedisce ai campi dinamici di scomparire al postback.

Altri suggerimenti

1) Veloce e sporco, potresti usare un UpdatePanel, ma ciò aumenterebbe un po 'le dimensioni del traffico. Ti consentirebbe di includere i controlli di convalida inviando di nuovo l'intero markup per la tabella.

2) È possibile utilizzare un tipo di CustomValidator o un metodo di convalida personalizzato e utilizzare semplicemente i valori Request.Form. Finché hai un modo per identificare i campi dovresti essere in grado di risolverlo, ma dovrai ricreare la scena se il postback fallisce poiché perderai quelle parti.

3) Potresti fare l'intero " postback " tramite una chiamata WebMethod e gestire tutto manualmente. Questo è probabilmente il modo più pulito per farlo dal momento che stai mescolando e abbinando le cose tradizionali WebForms con un modello più lato client.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top