Pergunta

Eu gostaria de postar algumas variáveis ??de formulário em uma página ASP clássico. Eu não quero ter que alterar as páginas ASP clássicas, por causa da quantidade de trabalho que precisa ser feito, e a quantidade de páginas que os consomem.

Os clássicos página ASP espera formar variáveis ??usuário e userpassword a ser apresentado a eles.

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

Em seguida, realiza diversas ações e configura sessões, indo para uma aplicação ASP.

Eu quero enviar essas variáveis ??dentro da página do ASP.NET, mas o controle de login é usercontrols dentro aninhados e modelos, por isso não posso obter nomes do elemento de formulário a ser "username" e "UserPassword".

Todas as idéias?

Foi útil?

Solução

Você não pode realmente "forward" um post sobre, como você está querendo fazer (na sua OP). O cliente tem de iniciar a POST para sua página ASP (s) (que o código em seu segundo post está fazendo).


Aqui está o código de auto-postagem de sua própria resposta para que você possa marcar uma resposta, como você sugeriu:

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

Outras dicas

Não use o controle de login asp.net (se).

Use simples html para as caixas de texto nome de usuário / senha em seu controle de usuário sem runat = "server":

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

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

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

Defina a propriedade PostBackUrl no botão para você url asp clássico e tudo deve estar bem.

Eu achei essa mensagem em outro site .

Vou construir um pequeno formulário com apenas as variáveis ??desejadas e saída para o cliente e submeter-se. É muito limpo, mas ele vem com o problema de quebrar o botão de volta, e enviar a volta senha para o cliente de uma forma não-criptografada.

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() ;
     }
} 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top