Как разместить страницу с asp.net на классический ASP

StackOverflow https://stackoverflow.com/questions/253142

Вопрос

Я хотел бы опубликовать некоторые переменные формы на классической странице ASP. Я не хочу менять классические ASP-страницы из-за объема работы, которую необходимо выполнить, и количества страниц, которые их потребляют.

Классическая страница ASP ожидает, что им будут переданы переменные формы Username и Userpassword.

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

Затем он выполняет различные действия и устанавливает сеансы, входя в приложение ASP.

Я хочу отправить эти переменные на страницу из ASP.NET, но элемент управления входом вложен в usercontrols и шаблоны, поэтому я не могу получить имена элементов формы как " username " и " UserPassword ".

Есть идеи?

Это было полезно?

Решение

Вы не можете действительно "пересылать" POST на, как вы хотите сделать (в вашем OP). Клиент должен инициировать POST на ваших страницах ASP (что делает код во втором посте).

<Ч>

Вот код самопостановки из вашего собственного ответа, чтобы вы могли пометить ответ, как вы предлагали:

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

Другие советы

Не используйте контроль входа в систему asp.net (если вы используете).

Используйте простой html для текстовых полей имени пользователя и пароля в вашем пользовательском элементе управления без runat = " сервер ":

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

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

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

Установите свойство PostBackUrl на кнопке для классического URL-адреса asp, и все должно быть в порядке.

Я нашел это на другом сайте .

Я создам небольшую форму с необходимыми переменными, выведу ее на клиент и отправлю сам. Это довольно аккуратно, но оно связано с проблемой взлома кнопки «Назад» и отправки пароля обратно клиенту в незашифрованном виде.

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() ;
     }
} 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top