2011-01-06 19 views
10

Un departamento de nuestra compañía está utilizando asp.net clásico mientras que nuestro departamento utiliza MVC.¿Cómo PUESO datos de un controlador MVC asp.net a una página ASP no MVC?

Necesitamos pasar 5 variables a su página (mediante envío de formulario). ¿Puede alguien mostrar un ejemplo simple de publicación de datos de formulario desde un controlador MVC a una página asp.net esperando la variable de formulario?

Respuesta

13

Si estoy leyendo esto correctamente, debería poder hacer esto sin ningún problema de dominio cruzado/aplicación. Desea hacer esto en el controlador, por lo que puede usar la clase HttpWebRequest para publicar los datos. Es conceptualmente lo mismo que publicar desde un navegador web en lo que respecta a la aplicación de destino.

Aquí está un rápido y sucio fragmento:

// name/value pairs. field names should match form elements 
string data = field2Name + "=" + field1Value + "&" + field2Name+ "=" + field2Value 

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(<url to other applications form action>); 

// set post headers 
request.Method = "POST"; 
request.KeepAlive = true; 
request.ContentLength = data.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 

// write the data to the request stream   
StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
writer.Write(data); 

// iirc this actually triggers the post 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
+0

Esto se ve como la solución que estoy buscando. Gracias, lo probaré! – Monkey

+2

recuerde descargar su escritor o use usando (var writer = new StreamWriter (request.GetRequestStream()) { writer.Write (data); } –

0

Si está cruzando dominios o aplicaciones, creo que puede que no tenga suerte. ¿Puedes dirigir al otro sitio y usar la cadena de consulta?

O escriba en una tabla y diríjase al otro sitio.

Realmente no estoy seguro de que pueda publicar en el otro sitio porque creo que va en contra del modelo de seguridad.

+0

No puedo usar la cadena de consulta debido a la exposición de seguridad, y es demasiado fácil de modificar para los usuarios. Está cruzando dominios. – Monkey

+0

Para cruzar el dominio, conviértalo a JSON y Serialize Javascript, luego, asígnelo a ViewBag si el controlador devuelve View o TempData si lo redirige a otra vista. Entonces esto es lo que hice: usar AngularJS para publicar en una WebAPI con CORS habilitado. WebAPI puede especificar URL que pueden enviar a su controlador. El @ Html.Raw (TempData ["yourdata"]) se puede asignar a un objeto Javascript donde Angular puede publicarlo en WebAPI. Consulte esta respuesta: http://stackoverflow.com/a/32769992/1171842. Para ASP clásico, el código que acepta los datos debe ser portado a WebAPI. – Yogi

-1

puede ser que falte el sutil problema, pero no puedo que acaba de establecer el action en el formulario de MVC a la url de la página ASP clásico que recibirá ¿eso?

Los campos estarán disponibles en los encabezados de formulario que puede leer en el lado ASP.

El único problema será si el sitio ASP tiene detección de falsificación de solicitud entre sitios (pero si son aplicaciones internas, puede agregar una excepción al código de detección de falsificación en el lado ASP).

Cuestiones relacionadas