كيفية نشر صفحة من asp.net الكلاسيكية ASP
-
05-07-2019 - |
سؤال
أود أن نشر بعض شكل متغيرات كلاسيك صفحة 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() ;
}
}