マイクロソフトのサイトにいくつかのバグを投稿しました。本当のバグだったのですが、MSFTはデザインとして閉じます[と私はほとんどの人がMSFTを好んだと思っていました]。ここに私は彼らが設計によってclasifyすると確信しているものがありますが、これは深刻なバグです。これはバグかどうか - ASP.NETリクエストパラメータ
これはASPXページ(NET 3.5)のすべてです。あなたはこの
<input type="text" id="mytextbox" name="mytextbox" /> // still it below the existing one
txt = Request.Params["mytextbox"]; // change to this line instead of TextBox1
のような別の単純なHTMLテキストボックス(未ASP)が含まれている場合
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" /><br />
<asp:Label ID="lblOutput" runat="server" Text="Label"></asp:Label>
分離コード
protected void Page_Load(object sender, EventArgs e)
{ /* this works */
if (IsPostBack)
{
string txt = string.Empty;
txt = Request.Params["TextBox1"];
lblOutput.Text = "You entered : " + txt;
}
}
protected void Button1_Click(object sender, EventArgs e)
{ /* this does not */
string txt = string.Empty;
txt = Request.Params["TextBox1"];
lblOutput.Text = "You entered : " + txt;
}
は今それからそれは両方の場所で動作します。
これは単なるテストケースでした。私の実際のプログラムには約30のパラメータがあり、Request.Param ['label1]、label2などを使ってループしています。私はそれをテストコードで動作させていますが、実際のコードではまだ動作しませんが、通常のテキストボックスは動作します!私にとっては、ASPは本当に単純なものですが、信じられないほど複雑にしています。 –
もう一度私は既存のコードで作業していますので、それをそのまま使用したいのですが、私の上記のコードはこのバグの内容を説明しています。以前のプログラマーは、新しいaspテキストボックスが問題を作り出すので、通常のtextbox probを使用しました。 –
要求オブジェクトを使用する必要はありません。フレームワークは既にすべての苦労をしているので、あなたはそうする必要はありません。前のプログラマーに嫌悪はしませんでしたが、ASP.NETにあまり似ていないように思えます。私には古典的なASPのハイブリッドアプローチのように見えます。 –