Frage

Ich möchte einige Formularvariablen in eine klassische ASP-Seite schreiben. Ich will nicht die klassischen ASP-Seiten, wegen der Menge an Arbeit haben, zu ändern, was getan werden müßte, und die Menge der Seiten, die sie verbrauchen.

Die klassische ASP-Seite erwartet Formularvariablen Benutzernamen und Userpassword ihnen vorgelegt werden.

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

Es führt dann verschiedene Aktionen und richtet Sitzungen, in eine ASP-Anwendung gehen.

Ich mag diese Variablen in die Seite von ASP.NET einreichen, aber die Anmeldekontrolle innerhalb Usercontrols und Vorlagen verschachtelt, so dass ich nicht die Form Elements Namen „username“ und „Userpassword“ zu sein bekommen.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie können nicht wirklich „vorwärts“ ein POST auf, wie Sie (in Ihrem OP) tun wollen, sind. Der Kunde hat die POST zu Ihrer ASP-Seite (n) zu initiieren (das ist der Code in Ihrem zweiten Beitrag tut).


Hier ist der Selbst POSTen Code von Ihrer eigenen Antwort, so dass Sie eine Antwort markieren, wie Sie vorgeschlagen:

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() ;
     }
}

Andere Tipps

Sie die asp.net Anmeldekontrolle nicht verwenden (wenn Sie sind).

Verwenden Sie einfache HTML für die Benutzername / Passwort Textfelder in Ihrer Benutzerkontrolle ohne runat = "server":

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

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

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

Stellen Sie die PostBackUrl Eigenschaft auf den Button Sie klassische asp url und es sollte alles in Ordnung sein.

Ich fand dies auf einem anderen Standort .

Ich werde ein kleines Formular mit nur die Variablen, die Sie wollen, und gibt es an den Kunden aufzubauen und sich selbst einreichen. Es ist recht ordentlich, aber es kommt mit dem Problem, die Zurück-Taste zu brechen, und das Senden des Passworts zurück an den Client in einer Form, unverschlüsselt.

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() ;
     }
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top