[トピック内 5 記事 (1 - 5 表示)] << 0 >>
■No86049 (たまたま さん) に返信 > 以下のようなコードを記述するとポストバックで情報が保持されません。 > <% > for (var i = 0; i < 10; i++ ) > { > Response.Write("<input type=\"text\" id=\"test" + i + "\" name=\"test" + i + "\" runat=\"server\"/>"); > } > %> > > 以下のコードでは保持されました。 > <input type="text" id="test" name="test" runat="server"/> > > Response.Write中のHTMLについてはrunat="server"が評価されない事が原因と思いますが > Response.Writeで記述したコントロールに対しても情報を保持されるようにする事は出来ないでしょうか。 最近は ASP.NET MVC しか触っていないので、ちょっとうろ覚えの回答になってしまいますが。 ASP.NET が出力した HTML コードを見ていただくとわかると思うのですが(ブラウザでソースを見る感じです) Visual Studio 上で <input type="text" id="test" name="test" runat="server"/> と書いたコードは、HTML 上ではそのまま表示されているわけではないかと思います。 (少なくとも runat="server" の部分はなくなっているか、何か別のものになっているかと) runat="server" が付加された HTML は ASP.NET 内でいったんサーバーコントロールとして認識され、その上で HTML として出力されます。そうすることで、ポストバック情報も保持されるようになります。 なので、上のほうの書き方では『クライアント側で』『直接 HTML として』出力されているため、ポストバック 情報が保持されないのです。 ではどうすればいいかというと、サーバーコントロールとして認識してもらうように、サーバー側でコントロール を追加してあげる必要があります。 https://msdn.microsoft.com/ja-jp/library/kyt0fzt1%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396 ちょっと検索して(僕には)わかりやすそうな解説が出てきましたが、これでどうでしょうか。 わからないところがあれば、また質問してみてください。
管理者用
- Child Tree -