5

いくつかのフォーム変数を従来の ASP ページに投稿したいと考えています。従来の ASP ページを変更する必要はありません。これは、実行する必要がある作業の量と、それらを使用するページの量のためです。

従来の ASP ページは、フォーム変数 Username と Userpassword が送信されることを想定しています。

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

次に、さまざまなアクションを実行してセッションをセットアップし、ASP アプリケーションに入ります。

これらの変数を ASP.NET からページに送信したいのですが、ログイン コントロールがユーザー コントロールとテンプレート内にネストされているため、フォーム要素の名前を "username" と "UserPassword" にすることができません。

何か案は?

4

3 に答える 3

4

(OPで)やりたいように、POSTを実際に「転送」することはできません。クライアントは、ASP ページへの POST を開始する必要があります (2 番目の投稿のコードが実行しています)。


あなたが提案したように、回答をマークできるように、あなた自身の返信からの自己投稿コードを次に示します。

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() ;
     }
}
于 2008-11-01T21:30:19.997 に答える
1

asp.net ログイン コントロールを使用しないでください (使用している場合)。

runat="server"を使用せずに、ユーザー コントロールのユーザー名/パスワード テキスト ボックスに単純な html を使用します。

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

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

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

ボタンの PostBackUrl プロパティを従来の ASP URL に設定すると、すべて問題ありません。

于 2008-10-31T13:31:37.997 に答える
0

I found this on another site.

I will build up a small form with just the variables you want, and output it to the client and submit itself. It's pretty neat, but it comes with the problem of breaking the back button, and sending the password back to the client in a form unencrypted.

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() ;
     }
} 
于 2008-10-31T11:17:37.710 に答える