0

データベースからいくつかの html コードを取得し、この値を Web フォームに表示したいと考えています。

以下の私のコードを見ることができます。ラベルとテキスト ボックスは表示されません。ただし、ブラウザーで .aspx ページ ソースを表示すると、取得されたラベルとテキスト ボックスが Eval で表示されます。ページにラベルやテキストボックスが表示されないのはなぜですか?

データベース値:

ここに画像の説明を入力

コードビハインド:

using (BurganEntities burganEntities = new BurganEntities())
        {
           List<DynamicField> dynamicFields=(from dynamicField in burganEntities.DynamicField select dynamicField).ToList();
           cdcatalog.DataSource = dynamicFields;
            cdcatalog.DataBind();
        }

aspx:

ここに画像の説明を入力

4

3 に答える 3

3

迅速な答えは、asp、net コントロールはサーバー側でコンパイルされていますが、最終的なレンダリング html ページでそれらをテキストとして使用しているためです。したがって、このコンパイルをスキップし、asp.net ページはそれらについて何も知りませんでした。

解決策は、asp.net コントロールを避け、通常の html コントロールを使用することです。コード ビハインドで見返りを得ることができます。使いやすい機能が欠けている可能性がありますが、別の方法で作業を行うことができます。

他の可能な解決策は、データベースを読み取り、コントロールを動的に作成することです。たとえば、データベース行にフラグを追加して、テキスト ボックスを作成し、コード ビハインドでそのテキスト ボックスを動的に作成することができます。

于 2013-07-03T23:20:51.907 に答える
1

あなたのコードは単に<asp:TextBox />ブラウザに出力しています。WebForms プロセッサで解析して<input />要素に変換するわけではありません。

データベースには、おそらく次のものを保存する必要があります。

<input id="txtsdsd" name="txtsdsd" class="textbox" onkeypress="return NumberOnly()" />

を使用Request.Form()して値を取得します。

于 2013-07-03T23:20:39.943 に答える
1

あなたが動的コントロールの作成を開始したかどうかはわかりませんが、2 回目の返信に加えて、動的コントロールに関するソースについて言及したいと思います。

ASP.NET MVC にはもはやコントロールの概念はありませんが、 ASP.NET Web フォーム データ アクセスページに従うことができます。

サーバー側でコードをコンパイルしたい場合; ポストバックすると、動的コンテンツが失われます。これを読んで、すべて完了です。

または、テキストボックスの値を取得できなかったと述べたように、次の方法を参照してください。

var textBox = FindControl("<id_of_textbox>") as TextBox;

if(textBox != null)
{
    var textBoxValue = ((TextBox)textBox).Text;
}

</id_of_textbox>

このページの FindControl メソッドを参照してください

于 2013-07-05T12:49:43.810 に答える