2011-01-06 22 views

Odpowiedz

13

Jeśli czytam to poprawnie, powinieneś być w stanie to zrobić bez obawy o dziedzinę/aplikację. Chcesz to zrobić w kontrolerze, możesz więc użyć klasy HttpWebRequest, aby opublikować dane. Jest to koncepcyjnie to samo, co publikowanie z przeglądarki internetowej w odniesieniu do aplikacji docelowej.

Oto szybki i brudny fragment:

// 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

To wygląda na rozwiązanie, którego szukam. Dzięki, spróbuję! – Monkey

+2

pamiętaj, aby opróżnić pisarz lub użyć przy użyciu (var writer = nowy StreamWriter (request.GetRequestStream()) { writer.Write (dane); } –

0

Jeśli przekraczasz domeny lub aplikacje, myślę, że możesz mieć pecha. Czy możesz skierować się na drugą stronę i skorzystać z querystringu?

Albo napisz do tabeli i przejdź bezpośrednio do innej witryny.

Naprawdę nie jestem pewien, czy będziesz w stanie publikować w innej witrynie, ponieważ myślę, że jest to sprzeczne z modelem bezpieczeństwa.

+0

Nie mogę użyć łańcucha zapytania z powodu zagrożenia bezpieczeństwa, a modyfikowanie go jest zbyt łatwe. To przecinające się domeny. – Monkey

+0

Aby przekroczyć domenę, skonwertuj obiekt do JSON i szereguj JavaScript, a następnie przypisz go do ViewBag, jeśli kontroler zwróci widok lub TempData, jeśli przekieruje do innego widoku. Oto, co zrobiłem: użyj AngularJS, aby opublikować post do WebAPI z włączonym CORS. WebAPI może określać adresy URL, które mogą publikować w swoim kontrolerze. @ Html.Raw (TempData ["yourdata"]) można przypisać do obiektu JavaScript, w którym Angular może opublikować go w WebAPI. Zobacz tę odpowiedź: http://stackoverflow.com/a/32769992/1171842. W przypadku klasycznej ASP kod akceptujący dane musi zostać przeniesiony do WebAPI. – Yogi

-1

I może brakować subtelny problem, ale nie można po prostu ustawić action w formularzu MVC do adresu URL klasycznej strony asp, które otrzymają to?

Pola będą dostępne w nagłówkach formularzy, które można odczytać po stronie ASP.

Jedynym problemem będzie to, czy witryna ASP ma wykrywać fałszowanie żądań witryny (ale jeśli są to aplikacje wewnętrzne, możesz dodać wyjątek do kodu wykrywania fałszerstw po stronie ASP).

Powiązane problemy