これを想像してみてください。
ステップ 1: ASPX ページの読み込み。
ステップ 2: ボタンは、runat サーバー属性を含む id または class タグを持つ html 要素 (div、span など) を作成するスクリプトを起動します。
そして私の問題は、
最終ステップ:私の C# ファイルから、その要素にアクセスして内部の html を取得する方法を教えてください。文字列に保存できますか?
PS: その文字列を使用して、mssql データベースに保存します。
サーバーへの完全なポストバックを行わずに、「実際の」 runat=server 要素/コントロールを作成することはできません。
最善の方法は、ページを送信する直前に、innerHTML を ASP.Net 隠しフィールドに格納するスクリプトを作成することです。その後、この非表示フィールドの値にアクセスしてデータを取得できます。
複数のオブジェクトを動的に作成する場合は、代わりに標準の html 非表示入力フィールドを使用する必要があります。これは、javascript を介して asp.net サーバー コントロールを作成できないためです。
<input type="hidden" name="fieldData_1" value="control 1 html content">
<input type="hidden" name="fieldData_2" value="control 2 html content">
これで、Request.Form オブジェクトからこれらの隠しフィールドにアクセスできるようになります。
Request.Form["fieldData_1"]
これを知っていれば、フォーム データを繰り返し処理し、すべての動的フィールドを処理できます。
foreach (string fieldData in Request.Form)
{
if(fieldData.Contains("fieldData_"){
//process the data for each field
}
}
隠しフィールドを一緒に使用することを避け、__doPostback('', '') メソッドを使用してデータをサーバーに直接渡すこともできます。これはさまざまな方法で実装できるので、http://dopostback.netを参照して、この方法がどのように機能するかを確認してください。
タグに属性を追加runat="server"
して HTML コントロールにし、その ID で .cs ファイルからアクセスできるようにします
HTML 内の要素をサーバーに戻す必要があると思います。私がクライアント関数で行うことは、新しく作成された要素の内部 HTML を取得し、非表示フィールドに格納してから呼び出すことです。__doPostBack('<hidden element id>', '');