私たちの部署がMVCを使用している間、当社のある部署は古典的なasp.netを使用しています。asp.net MVCコントローラから非MVC asp.netページにデータをPOSTするにはどうすればよいですか?
自分のページに5つの変数を渡す必要があります(フォーム送信による)。誰かがフォーム変数を期待してasp.netページにMVCコントローラからフォームデータを投稿する簡単な例を表示できますか?
私たちの部署がMVCを使用している間、当社のある部署は古典的なasp.netを使用しています。asp.net MVCコントローラから非MVC asp.netページにデータをPOSTするにはどうすればよいですか?
自分のページに5つの変数を渡す必要があります(フォーム送信による)。誰かがフォーム変数を期待してasp.netページにMVCコントローラからフォームデータを投稿する簡単な例を表示できますか?
これを正しく読んでいるなら、クロスドメイン/アプリケーションの懸念なしにこれを行うことができます。コントローラーでこれを行いたいので、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();
ドメインやアプリケーションを超えている場合は、運が悪いと思われます。他のサイトに誘導してクエリ文字列を使用できますか?
または、テーブルに書き込み、他のサイトに移動します。
セキュリティモデルに反していると思うので、他のサイトに投稿することは本当に確実ではありません。
セキュリティエクスポージャーのためにクエリ文字列を使用することはできません。ユーザーが変更するのは簡単すぎます。それはドメインを超えています。 – Monkey
ドメインを越えている場合は、オブジェクトを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
、あなただけ受信する従来のASPページのURLにMVCのフォームにaction
を設定することはできません。
はここで、拙速なスニペットですそれ?
フィールドは、ASP側で読むことができるフォームヘッダーで利用できます。
唯一の問題は、ASPサイトにクロスサイトリクエスト偽装検出がある場合です(ただし、社内アプリケーションの場合は、ASP側の偽造検出コードに例外を追加できます)。
これは私が探している解決策のようです。ありがとう、私はそれを試してみましょう! – Monkey
(var writer = new StreamWriter(request.GetRequestStream()) { writer.Write(data); }を使用して作成者をフラッシュするか、 –