Как я могу получить данные POST от контроллера MVC asp.net на странице без MVC asp.net?

Один отдел в нашей компании использует классический asp.net, в то время как наш отдел использует MVC.

Нам нужно передать 5 переменных на его страницу (по форме submit). Может ли кто-нибудь показать простой пример отправки данных формы с контроллера MVC на страницу asp.net, ожидающую переменную формы?

Ответ 1

Если я читаю это правильно, вы сможете сделать это без каких-либо проблем с перекрестными доменами/приложениями. Вы хотите сделать это в контроллере, поэтому вы можете использовать класс HttpWebRequest для публикации данных. Это концептуально то же самое, что и публикация в веб-браузере в отношении целевого приложения.

Вот быстрый и грязный фрагмент:

// 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();

Ответ 2

Если вы пересекаете домены или приложения, я думаю, вам может быть не повезло. Можете ли вы перейти на другой сайт и использовать запрос?

Или напишите в таблицу и перейдите на другой сайт.

На самом деле не уверен, что вы сможете публиковать сообщения на другом сайте, поскольку я думаю, что это противоречит модели безопасности.

Ответ 3

Мне может быть не хватает тонкой проблемы, но не можете ли вы просто установить action в форме MVC на URL-адрес классической страницы asp, которая ее получит?

Поля будут доступны в заголовках форм, которые вы можете прочитать на стороне ASP.

Единственная проблема будет заключаться в том, что на сайте ASP есть обнаружение подделки на основе взаимного сайта (но если они являются встроенными приложениями, вы можете добавить исключение в код обнаружения подделки на стороне ASP).