2016-03-26 17 views
0

私のWebページには、携帯電話や電子メールなどの連絡先に入力テキストを追加できるオプションの連絡先パネルがあります。連絡先の作成ボタンをクリックすると、一意のID(例:txtrelat1)またはrunat="server"クライアント側ではWebページにはデフォルトでid="txtrelat0"の入力テキストがあります)。ユーザーがsubmitボタンをクリックすると、サーバー側でonserverclickイベント のメインの質問registerが呼び出されます。これは、form1.FindControl("txtrelat0")を使用すると見つけられ、それはHtmlInputTextに私が望むときform1.FindControl("txtrelat1")それは見つけられず、ヌルを返しますか? ありがとうございましたなぜfindcontrol( "x")ASP.NETメソッドは、javascriptランタイム経由で作成されたHTMLコントロールを見つけることができませんか?

+0

JavaScriptコントロールはコードビハインドでは見つかりません。 –

+1

属性 'runat =" server "を単にクライアント側から追加しても、それが取得されるわけではありません。クライアント側から投稿された値を探しているなら、テキスト要素の 'name'属性を介して' Request.Forms'プロパティからそれらを掘り出すことができます。 – mason

答えて

0

FindControlは、現在実行中のページまたはコントロールのサーバーコントロールを検出します。サーバーコントロールのみを扱います。コードビハインドでは、追加した入力から投稿された値を読み取ることができます。 Request.Form["x"]に電話することができます。

ページにコントロールを追加してからポストバックを行うと、追加した要素がサーバーページに「記憶されません」という欠点があります。彼らはポストバックの後に消えるでしょう。

これらのタイプのクライアント/サーバビヘイビアをWebフォームと混在させることは楽しいことではありません。すべてのサーバーコントロールで簡単に行うことができます。サーバーイベントに応答してサーバーコードにVisible="false"または"true"を設定するだけです。または、API呼び出しを使用してクライアント上ですべて実行できます。

私はwebformsがそれほど好きではありませんが、webformsプロジェクトで作業しなければならないときに、サーバコントロールでWebformsのやり方を行う方が簡単です。

関連する問題