teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤記訂正

2017/11/01 07:10

投稿

退会済みユーザー
answer CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  以下、手順を書きます。試してみる場合は、下に書いたように、一気にやらないで、ステップバイステップで実装し、それを実行して確認しながら進めることをお勧めします。
30
30
 
31
- (1) aspnet4site サイトの Default.aspx にボタン UserNameLabel を追加、Default.aspx.cs の Page_Load に以下の 2 行を追加。エラーなく動くことは確認しておく。
31
+ (1) aspnet4site サイトの Default.aspx にラベル UserNameLabel を追加、Default.aspx.cs の Page_Load に以下の 2 行を追加。エラーなく動くことは確認しておく。
32
32
 
33
33
  ```
34
34
  using System;

1

追記

2017/11/01 07:10

投稿

退会済みユーザー
answer CHANGED
@@ -14,4 +14,111 @@
14
14
 
15
15
  局所的な質問だけでなく、全体のシナリオを含めて何がしたいのかを書いていただけませんか。そうすれば、局所的な質問の部分は実現が無理でも、「それはできないけど、やりたいことはこうすれば実現できる」というような代案も出てくるかもしれません。
16
16
 
17
- 全体的なやりたいことやストーリーのごく一部を切り出して質問すると、もしその質問が全体的なやりたいことを実現するのには見当違いだった場合、回答も当然やりたいことを実現するには的外れになってしまいます。そうすると、見当違いと的外れのやり取りが繰り返されるだけになって、なかなか解決にたどり着けません。時間の無駄でもありますし。
17
+ 全体的なやりたいことやストーリーのごく一部を切り出して質問すると、もしその質問が全体的なやりたいことを実現するのには見当違いだった場合、回答も当然やりたいことを実現するには的外れになってしまいます。そうすると、見当違いと的外れのやり取りが繰り返されるだけになって、なかなか解決にたどり着けません。時間の無駄でもありますし。
18
+
19
+ **【2017/11/1 追記】**
20
+
21
+ 2017/11/01 10:45 の私のコメントで「ご参考に、回答欄に自分がどのように検証したかを書いておきます」と書きましたが、それを以下に書きます。
22
+
23
+ 質問者さんの考えた基本的な方法で POST 送信はできるという最低限のことを確認できるだけですが、「できる」ということは分かるはずです。
24
+
25
+ まず環境ですが、Windows 10 Pro. 64-bit, IIS10, VS2010 Pro., VS2015 Community, IE11 です。
26
+
27
+ Visual Studio のテンプレートで作った ASP.NET Web Forms の Web サイトプロジェクト 2 つを IIS 上で動くように設定し、一方のサイト名(ホスト名)を aspnet4site、他方を websiteproject.com としています。
28
+
29
+ 以下、手順を書きます。試してみる場合は、下に書いたように、一気にやらないで、ステップバイステップで実装し、それを実行して確認しながら進めることをお勧めします。
30
+
31
+ (1) aspnet4site サイトの Default.aspx にボタン UserNameLabel を追加、Default.aspx.cs の Page_Load に以下の 2 行を追加。エラーなく動くことは確認しておく。
32
+
33
+ ```
34
+ using System;
35
+ using System.Collections.Generic;
36
+ using System.Linq;
37
+ using System.Web;
38
+ using System.Web.UI;
39
+ using System.Web.UI.WebControls;
40
+ using System.Web.UI.HtmlControls;
41
+ using System.Web.Configuration;
42
+
43
+ public partial class _Default : System.Web.UI.Page
44
+ {
45
+ protected void Page_Load(object sender, EventArgs e)
46
+ {
47
+ string method = Request.HttpMethod;
48
+ UserNameLabel.Text = Label1.Text = Request.Form["Username"];
49
+
50
+ // ・・・以下略・・・
51
+ ```
52
+
53
+ (2) websiteproject.com サイトに以下の内容の HtmlPage.html を追加。
54
+
55
+ 実行して[submit]ボタンをクリックすると上記 (1) の Default.aspx が表示され、UserNameLabel に "POST 送信した文字列" と表示されることを確認。
56
+
57
+ ```
58
+ <html>
59
+ <head>
60
+ <title></title>
61
+ </head>
62
+ <body>
63
+ <form method="post" action="http://aspnet4site/Default.aspx">
64
+ <input id="Username" name="Username" type="text" value="POST 送信した文字列"/>
65
+ <input id="Submit1" type="submit" value="submit" />
66
+ </form>
67
+ </body>
68
+ </html>
69
+ ```
70
+
71
+ (3) websiteproject.com サイトの Default.aspx に Button を追加。Button.Click イベントのハンドラで (2) の html コードをそのまま送信できるようにする。
72
+
73
+ Default.aspx のボタンクリックで (2) の HtmlPage.html と同じ画面が表示され、HtmlPage.html の[button]クリックで上記 (1) の Default.aspx が表示され、UserNameLabel に "POST 送信した文字列" と表示されることを確認。
74
+
75
+ ```
76
+ using System;
77
+ using System.Collections.Generic;
78
+ using System.Linq;
79
+ using System.Web;
80
+ using System.Web.UI;
81
+ using System.Web.UI.WebControls;
82
+
83
+ public partial class _Default : Page
84
+ {
85
+ protected void Page_Load(object sender, EventArgs e)
86
+ {
87
+
88
+ }
89
+
90
+ protected void Button1_Click(object sender, EventArgs e)
91
+ {
92
+ string html = @"<html>
93
+ <head>
94
+ <title></title>
95
+ </head>
96
+ <body>
97
+ <form method = ""post"" action = ""http://aspnet4site/Default.aspx"" >
98
+ <input id = ""Username"" name = ""Username"" type = ""text"" value = ""POST 送信した文字列"" />
99
+ <input id = ""Submit1"" type = ""submit"" value = ""submit"" />
100
+ </form>
101
+ </body>
102
+ </html> ";
103
+
104
+ Response.Write(html);
105
+ Response.End();
106
+ }
107
+ }
108
+ ```
109
+
110
+ (4) 上記 (3) の html コードの body 要素に onload='document.forms[0].submit()' を追加。Default.aspx のボタンクリックで上記 (1) の Default.aspx が表示され、UserNameLabel に "POST 送信した文字列" と表示されることを確認。
111
+
112
+ その際、Fiddler や Visual Studio のデバッガで動作を確認すると以下のようになります。(権限の問題か自分はここには画像は貼れないので、自分の使っているレンタルサーバーに画像をアップし、それへのリンクを張りました)
113
+
114
+ (a) websiteproject.com サイトの Default.aspx のボタンクリックの際の要求と応答。
115
+
116
+ [http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f11%2ffiddler1.jpg](http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f11%2ffiddler1.jpg)
117
+
118
+ (b) 上記 (a) の html コードにより http://aspnet4site/Default.aspx に post 要求がかかる。
119
+
120
+ [http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f11%2ffiddler2.jpg](http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f11%2ffiddler2.jpg)
121
+
122
+ (c) デバッガで aspnet4site サイトの Default.aspx.cs を見て post 要求となっていることを確認。
123
+
124
+ [http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f11%2fpost.jpg](http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f11%2fpost.jpg)