Как я могу получить данные 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).