Question

J'aimerais publier des variables de formulaire dans une page ASP classique. Je ne souhaite pas modifier les pages ASP classiques, en raison de la quantité de travail à effectuer et de la quantité de pages qui les consomme.

La page ASP classique attend que les variables de formulaire Username et Userpassword leur soient soumises.

username = Request.Form("UserName")
userpassword = Request.Form("Userpassword")

Il effectue ensuite diverses actions et configure des sessions en se rendant dans une application ASP.

Je souhaite soumettre ces variables à la page à partir d'ASP.NET, mais le contrôle de connexion est imbriqué dans usercontrols et templates, je ne peux donc pas obtenir les noms de l'élément de formulaire comme "username". et "UserPassword".

Des idées?

Était-ce utile?

La solution

Vous ne pouvez pas vraiment "transférer". un post sur, comme vous voulez faire (dans votre OP). Le client doit initialiser le POST sur vos pages ASP (comme le fait le code de votre deuxième message).

Voici le code d'auto-postage de votre propre réponse afin que vous puissiez marquer une réponse, comme vous l'avez suggéré:

public class  RemotePost{
     private  System.Collections.Specialized.NameValueCollection Inputs 
     = new  System.Collections.Specialized.NameValueCollection() ;

    public string  Url  =  "" ;
    public string  Method  =  "post" ;
    public string  FormName  =  "form1" ;

    public void  Add( string  name, string value ){
        Inputs.Add(name, value ) ;
     }

     public void  Post(){
        System.Web.HttpContext.Current.Response.Clear() ;

         System.Web.HttpContext.Current.Response.Write( "<html><head>" ) ;

         System.Web.HttpContext.Current.Response.Write( string .Format( "</head><body onload=\"document.{0}.submit()\">" ,FormName)) ;

         System.Web.HttpContext.Current.Response.Write( string .Format( "<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >" ,

        FormName,Method,Url)) ;
            for ( int  i = 0 ; i< Inputs.Keys.Count ; i++){
            System.Web.HttpContext.Current.Response.Write( string .Format( "<input name=\"{0}\" type=\"hidden\" value=\"{1}\">" ,Inputs.Keys[i],Inputs[Inputs.Keys[i]])) ;
         }
        System.Web.HttpContext.Current.Response.Write( "</form>" ) ;
         System.Web.HttpContext.Current.Response.Write( "</body></html>" ) ;
         System.Web.HttpContext.Current.Response.End() ;
     }
}

Autres conseils

N'utilisez pas le contrôle de connexion asp.net (si vous l'êtes).

Utilisez du code HTML simple pour les zones de texte nom d'utilisateur / mot de passe de votre contrôle utilisateur sans runat = "serveur":

<input type="text" name="UserName" />

<input type="password" name="Userpassword" />

<asp:Button ID="btnLogin" runat="server" PostBackUrl="Destination.asp" />

Définissez la propriété PostBackUrl sur le bouton sur votre URL ASP classique et tout devrait bien se passer.

J'ai trouvé cela sur sur un autre site .

Je vais créer un petit formulaire avec uniquement les variables souhaitées, puis le sortir sur le client et le soumettre lui-même. C’est plutôt bien, mais cela pose le problème de casser le bouton Précédent et de renvoyer le mot de passe au client sous une forme non chiffrée.

public class  RemotePost{
     private  System.Collections.Specialized.NameValueCollection Inputs 
     = new  System.Collections.Specialized.NameValueCollection() ;

    public string  Url  =  "" ;
    public string  Method  =  "post" ;
    public string  FormName  =  "form1" ;

    public void  Add( string  name, string value ){
        Inputs.Add(name, value ) ;
     }

     public void  Post(){
        System.Web.HttpContext.Current.Response.Clear() ;

         System.Web.HttpContext.Current.Response.Write( "<html><head>" ) ;

         System.Web.HttpContext.Current.Response.Write( string .Format( "</head><body onload=\"document.{0}.submit()\">" ,FormName)) ;

         System.Web.HttpContext.Current.Response.Write( string .Format( "<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >" ,

        FormName,Method,Url)) ;
            for ( int  i = 0 ; i< Inputs.Keys.Count ; i++){
            System.Web.HttpContext.Current.Response.Write( string .Format( "<input name=\"{0}\" type=\"hidden\" value=\"{1}\">" ,Inputs.Keys[i],Inputs[Inputs.Keys[i]])) ;
         }
        System.Web.HttpContext.Current.Response.Write( "</form>" ) ;
         System.Web.HttpContext.Current.Response.Write( "</body></html>" ) ;
         System.Web.HttpContext.Current.Response.End() ;
     }
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top