net method formulario form clasico asp asp.net

asp.net - method - Cómo PUBLICAR un FORMULARIO de página HTML a ASPX



request form asp net (7)

¿Estás seguro de que tu formulario HTML es correcto y, de hecho, realiza un HTTP POST? Sugeriría ejecutar Fiddler2 , y luego tratar de iniciar sesión a través de su Login.aspx, luego el sitio HTML remoto, y luego comparar las solicitudes que se envían al servidor. Para mí, ASP.Net siempre funcionó bien: si la solicitud HTTP contiene un POST válido, puedo obtener los valores usando Request.Form ...

¿Cómo publico un formulario desde una página HTML a la página ASPX (2.0) y puedo leer los valores?

Actualmente tengo un sitio ASP.NET usando el proveedor de Membresía y todo está funcionando bien. Los usuarios pueden iniciar sesión desde la página de Login.aspx.

Ahora queremos que los usuarios inicien sesión directamente desde otro sitio web, que básicamente es una página HTML estática. Los usuarios deben poder ingresar su nombre y contraseña en esta página HTML y enviarla por correo a mi página de Login.aspx (donde puedo iniciar sesión manualmente).

¿Es posible pasar valores de formulario de HTML a ASPX? He intentado todo y la colección Request.Form.Keys está siempre vacía. No puedo usar HTTP GET ya que son credenciales y no se pueden pasar en una cadena de consulta.

La única forma que conozco es un iframe.


Esto es muy posible Me burlé de 3 páginas que deberían darte una prueba de concepto:

página .aspx:

<form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:TextBox TextMode="password" ID="TextBox2" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Button" /> </div> </form>

código detrás:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load For Each s As String In Request.Form.AllKeys Response.Write(s & ": " & Request.Form(s) & "<br />") Next End Sub

Página HTML separada:

<form action="http://localhost/MyTestApp/Default.aspx" method="post"> <input name="TextBox1" type="text" value="" id="TextBox1" /> <input name="TextBox2" type="password" id="TextBox2" /> <input type="submit" name="Button1" value="Button" id="Button1" /> </form>

... y regurgita los valores de forma como se esperaba. Si esto no funciona, como sugirieron otros, use una herramienta de análisis de tráfico (violinista, etéreo), porque es probable que algo no vaya donde usted está esperando.


Tu puedes. Cree una página HTML con el formulario que contendrá los componentes necesarios de la página login.aspx (es decir, nombre de usuario, etc.) y asegúrese de que tengan los mismos ID. Para su acción, asegúrese de que sea una publicación.

Es posible que deba hacer algún código en la página login.aspx en la función Page_Load para leer el formulario (en el objeto Request.Form) y llamar a las funciones apropiadas para iniciar sesión en el usuario, pero aparte de eso, debe tener acceso a la forma, y ​​puede hacer lo que quiera con ella.


Tu puedes.

La manera más fácil de ver cómo puede hacer esto es ir a la página aspx en la que desea publicar. Luego guarde la fuente de esa página como HTML. Cambia la acción del formulario en tu nueva página html para que apunte a la página aspx desde la que originalmente la copiaste.

Agregue etiquetas de valor a sus campos de formulario y coloque los datos que desea, luego abra la página y presione el botón Enviar.


La colección Request.Form.Keys estará vacía si ninguna de las entradas de html tiene NAME. Es fácil olvidarse de ponerlos allí después de haber estado haciendo .NET por un tiempo. Solo nómbrelos y estará listo para partir.


En el formulario html, debe proporcionar una variable de estado de vista adicional e inhabilitar ViewState en una página de servidor. Sin embargo, esto requiere cierto control en ambos lados.

Formulario HTML:

<html><body> <form id=''postForm'' action=''WebForm.aspx'' method=''POST''> <input type=''text'' name=''postData'' value=''base-64-encoded-value'' /> <input type=''hidden'' name=''__VIEWSTATE'' value='''' /> <!-- still need __VIEWSTATE, even empty one --> </form> </body></html>

Nota vacía __VIEWSTATE.

WebForm.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm.aspx.cs" Inherits="WebForm" EnableEventValidation="False" EnableViewState="false" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="postForm" runat="server"> <asp:TextBox ID="postData" runat="server"></asp:TextBox> <div> </div> </form> </body> </html>

Nota EnableEventValidation="False", EnableViewState="false" para evitar el error de validación para el estado de vista vacía. Los valores de Código Atrás / Hereda no son precisos.

WebForm.cs:

public partial class WebForm : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string value = Encoding.Unicode.GetString(Convert.FromBase64String(this.postData.Text)); } }


Espero que esto ayude - Pon esta etiqueta en html y

elimine su contenido de diseño de login.aspx ... solo escriba solo la directiva de la página

y obtendrá los valores en la página aspx después de que el botón de envío haga clic de esta manera: protected void Page_Load (object remitente, EventArgs e) {

if (!IsPostBack) { CompleteRegistration(); } }

public void CompleteRegistration () {

NameValueCollection nv = Request.Form; if (nv.Count != 0) { string strname = nv["txtbox1"]; string strPwd = nv["txtbox2"]; } }