سؤال

أود أن نشر بعض شكل متغيرات كلاسيك صفحة ASP.أنا لا أريد أن تضطر إلى تغيير الكلاسيكية صفحات ASP ، بسبب حجم العمل الذي يتعين القيام به ، كمية الصفحات التي تستهلك منها.

الكلاسيكية صفحة ASP تتوقع شكل متغيرات المستخدم وكلمة Userpassword التي ستقدم لهم.

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

ثم ينفذ إجراءات مختلفة و مجموعات الجلسات الذهاب إلى تطبيق ASP.

أريد أن أقدم هذه المتغيرات في صفحة من ASP.NET لكن الدخول التحكم المتداخلة داخل usercontrols و قوالب, لذلك أنا لا يمكن الحصول على شكل عنصر أسماء إلى أن "اسم المستخدم" و "UserPassword".

أي أفكار ؟

هل كانت مفيدة؟

المحلول

ولا يمكنك حقا "إلى الأمام" في ما بعد على مثل كنت ترغب في القيام به (في 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="server":

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

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

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

تعيين الخاصية PostBackUrl عنصر على زر لك 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