2009-10-25 5 views
6

A volte Microsoft fa qualcosa di così incredibilmente stupido da farmi male alla testa. Aiutami a scoprire che non è proprio il caso ... per favore!IE non offre di salvare la password del modulo ASP.NET

Ho un problema con la pagina di accesso di un sito ASP.NET (3.5) che sto sviluppando in cui IE (7 o 8 ... non può sopportare di aprire 6) non offre di salvare la password quando un utente effettua il login. Ho controllato altri browser e Firefox, Chrome e Safari offrono tutti il ​​salvataggio della password. Ho anche confermato che il salvataggio delle password di IE sulle mie caselle di test sta funzionando correttamente su altri siti e per es. Google ecc. Funziona perfettamente.

La ricerca che ho fatto è risultata molto piccola, ma quello che ha fatto apparire sembra suggerire che IE non offrirà di salvare una password se il modulo nella pagina contiene più di due controlli di testo. Questo è il caso del mio modulo che ha anche i controlli per consentire a un utente di registrarsi. E quando rimuovo questi controlli aggiuntivi, IE richiede magicamente di salvare la password, quindi sembra vero.

Ora ... se ASP.NET mi consente di avere più moduli, tutto andrebbe bene e sarei in grado di separare le due funzioni in moduli standalone e IE richiederebbe di salvare le password. Ma ASP.NET non mi consente di farlo poiché consente solo un singolo modulo. Potrei fondere un modulo non runat = server e provare a farlo, ma indovina cosa? Poiché la mia pagina utilizza una pagina master, qualsiasi tag modulo che aggiungo viene automaticamente rimosso, anche se si tratta di un modulo non runat = server.

Quindi, non vedo alcun modo per aggirare questo senza modificare fondamentalmente ciò che stavo cercando di ottenere. Sembra che devo spiegare ai miei utenti che non verrà richiesto loro di salvare le loro password se usano IE (un prodotto Microsoft) perché ho sviluppato il mio sito con ASP.NET (err ... un prodotto Microsoft).

Se è così, non riesco proprio a capire quanto sia ridicola. Se qualcuno può offrire qualche idea su come aggirarlo, può dirmi che ho sbagliato tutto e sono anch'io un grande idiota idiota, o semplicemente voglio confermare che non sono solo io a pensare che questo sia monumentalmente stupido, quindi per favore, per favore fallo.

Solo per la cronaca, davvero non voglio (e non vedo perché dovrei dovrei) compromettere il mio design e dividere le mie pagine in due (il che si tradurrà in un'esperienza peggiore per l'utente).

+0

decisione di progettazione curioso da parte di MS. Non ho idea di quale sia la motivazione. Per quanto riguarda il tuo design ... Perché non offrire solo per mantenere l'accesso dell'utente se sei convinto che il risparmio di password è un affare per gli utenti? O lo fai anche tu? – Bryan

+0

Sì, penso che questa sarà la mia unica opzione, speravo solo nella conferma di quel comportamento, dato che c'è ben poco che ho potuto trovare su di esso. E, come dici tu, è curioso. Non è tanto che la password-risparmio è una garanzia di insuccesso, solo difficile da spiegare a nessuno che potrebbe chiedere perché non è possibile e perché la piattaforma Microsoft + del browser Microsoft = Fail, in questo caso particolare. – BinarySolo

+0

Hai provato a utilizzare le caselle di testo HTML non elaborate con un modulo che si rimanda a una pagina aspx? – Chris

risposta

2

@Chris Questo è quello che sono andato alla fine.

Quindi, a beneficio di chiunque altro, ho ancora i miei controlli di attivazione in un formato runat = server e li elaboriamo nel codice per quella pagina. Poi ho un secondo modulo HTML standard con campi di testo di input HTML che postano su una diversa pagina .NET. Questo riguarda il login degli utenti. Raccolgo i valori in questa pagina tramite Request.Form e gestisco il login da qui.

Upsides:

funziona il tutto e gli utenti ottengono i loro dati di accesso ricordati come si aspetterebbero a.

Svantaggi:

ho perso la possibilità di utilizzare un MasterPage (come ho bisogno di due forme nella pagina) così ho effettivamente dovuto duplicare il modello - non mi piace così tanto.

Se il login degli utenti non è valido o causa qualche tipo di errore, devo reindirizzare alla pagina iniziale e passargli un flag per farlo visualizzare un messaggio di errore rilevante - Non mi piace neanche tanto.

Come ho detto, però, funziona da solo e in questo caso è quello che era più importante. Grazie per il tuo contributo.

+0

Perché non aggiungere semplicemente un javascript alla pagina che viene eseguita quando si fa clic sul pulsante di accesso che rimuove le altre caselle di testo dalla pagina? – Michael

+0

È possibile utilizzare una pagina master e disporre di contenuto esterno al tag modulo ASPX. Può essere difficile lavorare in alcuni layout, ma se si può usare il posizionamento assoluto o relativo, allora forse non è male. Devi solo posizionare un segnaposto contenuto nella pagina principale che si trova al di fuori del tag del modulo, sopra o sotto, quindi posizionare il controllo del contenuto per esso nella pagina dei contenuti. Un buon esempio di ciò, che probabilmente hai già usato, è metterne uno nella sezione head per aggiungere script/stile in una pagina di contenuto. – eselk