2011-01-06 10 views
10

私たちの部署がMVCを使用している間、当社のある部署は古典的なasp.netを使用しています。asp.net MVCコントローラから非MVC asp.netページにデータをPOSTするにはどうすればよいですか?

自分のページに5つの変数を渡す必要があります(フォーム送信による)。誰かがフォーム変数を期待してasp.netページにMVCコントローラからフォームデータを投稿する簡単な例を表示できますか?

答えて

13

これを正しく読んでいるなら、クロスドメイン/アプリケーションの懸念なしにこれを行うことができます。コントローラーでこれを行いたいので、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(); 
+0

これは私が探している解決策のようです。ありがとう、私はそれを試してみましょう! – Monkey

+2

(var writer = new StreamWriter(request.GetRequestStream()) { writer.Write(data); }を使用して作成者をフラッシュするか、 –

0

ドメインやアプリケーションを超えている場合は、運が悪いと思われます。他のサイトに誘導してクエリ文字列を使用できますか?

または、テーブルに書き込み、他のサイトに移動します。

セキュリティモデルに反していると思うので、他のサイトに投稿することは本当に確実ではありません。

+0

セキュリティエクスポージャーのためにクエリ文字列を使用することはできません。ユーザーが変更するのは簡単すぎます。それはドメインを超えています。 – Monkey

+0

ドメインを越えている場合は、オブジェクトをJSONに変換し、Javascriptをシリアライズし、別のビューにリダイレクトされた場合にViewまたはTempDataを返す場合は、ViewBagに割り当てます。これが私のやり方です:AngularJSを使って、CORSを有効にしてWebAPIに投稿してください。 WebAPIは、コントローラに投稿できるURLを指定できます。 @ Html.Raw(TempData ["yourdata"])は、WebAPIにAngularが投稿できるJavascriptオブジェクトに割り当てることができます。この回答を参照してください:http://stackoverflow.com/a/32769992/1171842従来のASPでは、データを受け入れるコードをWebAPIに移植する必要があります。 – Yogi

-1

、あなただけ受信する従来のASPページのURLにMVCのフォームにactionを設定することはできません。

はここで、拙速なスニペットですそれ?

フィールドは、ASP側で読むことができるフォームヘッダーで利用できます。

唯一の問題は、ASPサイトにクロスサイトリクエスト偽装検出がある場合です(ただし、社内アプリケーションの場合は、ASP側の偽造検出コードに例外を追加できます)。

関連する問題