2008-10-31 8 views
5

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

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

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

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

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

Любые идеи?

+0

ли вы когда-нибудь получить эту работу проводки к классической странице осины? Я получил все, чтобы зарегистрировать ключи к объекту RemotePost, но потом не могу получить их на классической странице asp. – 2015-03-04 20:06:59

ответ

4

Вы не можете «переслать» 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() ; 
    } 
} 
0

Я нашел это на another site.

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

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

Не беспокойтесь о том, чтобы отправить пароль обратно незашифрованным - в конце концов, так оно и было. Кроме того, вы должны нажать кнопку «Отправить» и сообщение там, где пользователи, не являющиеся пользователями JS, будут нажимать. – 2008-11-02 00:14:11

+0

Спасибо, Марк. Если кто-то отправит ответ в полном объеме, я приму ответ. – digiguru 2008-11-03 09:27:01

1

Не используйте элемент управления доступом 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 и все все должно быть в порядке.

+0

Хорошо, но я предполагаю, что это означает, что я не могу сделать что-либо серверное с интересами для имени пользователя и пароля пользователя перед их отправкой? – digiguru 2008-10-31 15:14:57