2

デフォルトの .NET CheckBox コントロールが Value プロパティをサポートしていないことは承知しています。入力コントロールは HTML 仕様の一部として値をサポートしているため、これは奇妙に思えます。

私の質問は、標準の ASP .NET CheckBox および CheckBoxList と同様に機能する asp.net 用のカスタム ユーザー コントロールを知っている人がいるかどうかです。

4

8 に答える 8

2

おそらく私はあなたの質問を誤解していますが、典型的な HTML コントロールも使用できることをご存知ですか?

たとえば、ASPX ページを作成し、次のソースを追加します。

    <div>
            <input type="checkbox" runat="server" id="chkBox" value="test" />
            <asp:Label ID="lblCheckboxValue" runat="server" />
    </div>

    <asp:Button runat="server" OnClick="Button_Click" />

次に、コード ビハインドに次のコードを追加します。

protected void Button_Click(object sender, EventArgs e)
        {
            if (chkBox.Checked)
                lblCheckboxValue.Text = chkBox.Value;
            else
                lblCheckboxValue.Text = "";

        }

html チェック ボックスの値のプロパティを好きなように設定できます。

于 2009-01-08T06:32:33.640 に答える
1

サーバー側でのみアクセスする必要がある場合は、Checkbox コントロールを継承するサーバー コントロールを簡単に作成し、サーバー側から設定および取得できる value と呼ばれるプロパティを追加できます。

ただし、クライアント側からアクセスする必要がある場合は、サーバー コントロールがレンダリングするものについて想像力を働かせる必要があります。おそらく、非表示フィールドに値が含まれるチェックボックスと非表示フィールドの組み合わせです。

サーバー側でチェックボックスの値を抽出するだけの場合は、チェックボックスコントロールの単純な拡張で十分だと思います-サーバー側から設定および取得できる追加のプロパティを追加します.. 。 公園で散歩。

于 2009-01-07T02:29:26.143 に答える
0

値はhtmlにレンダリングされていないようですが、まだビューステートに保存されています。そのため、CheckboxList.Items() で ListItem オブジェクトにアクセスすると、サーバー側で値を取得できました。

于 2009-01-09T06:20:44.600 に答える
0

CheckBox をオーバーライドして、独自のカスタム コントロールを作成できます。サーバー側とクライアント側で使用可能な Value プロパティを追加するために作成した例を次に示します。

public class ValueCheckBox : CheckBox
{
    public string Value
    {
        get;
        set;
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        writer.AddAttribute("value", this.Value);
        base.Render(writer);
    }
}
于 2012-06-25T18:19:06.193 に答える
0

これは古い質問ですが、状況は変わりました。まず、asp.net 4.6 では、value 属性がチェックボックスに設定されます。この回答のうち、ListItem クラスを使用してチェックボックスを生成する CheckBoxList に関連するものはほとんどありません。

4.6 より前の私の解決策は、データ属性を追加することです。これにより、<span>javascript で見つけることができるチェックボックスとラベルの周りにコントロールが作成されます。

        foreach( ListItem item in selCheckList.Items)
        {
            item.Attributes["data-role-id"] = item.Value;
        }
于 2016-10-10T07:27:43.437 に答える
0

いいえ、それらは同じではありません

私が取り組んでいる機能では、製品のアップグレードのリストをチェックボックスのリストとして表示する必要があります。どのチェックボックスが「チェック」されているかに基づいて、それらを製品に追加する必要があります。CheckBoxList の項目は動的であるため、チェックされた項目を反復処理するときは、何らかの一意の識別子が必要です。「Checked」値はブール値のみです

于 2009-01-07T02:20:27.567 に答える
0

ここで MS が行ったことは、.net のような ASP コントロールを作成したことです。ただし、ブラウザーで動作することになっているため、標準の HTML コントロールとしてレンダリングされます。

そのため、コード ビハインド cs/vb では .Checked (bool) が表示されますが、クライアント/javascript では .value が表示されます。

一意の識別子が必要な場合は、ID または ClientID を確認する必要があります。または、属性をチェックボックスに追加して (.Attributes.Add())、それを使用することもできます。

于 2009-01-07T02:24:25.110 に答える
-1

「チェック済み」は「値」と同じではありませんか?

http://www.w3schools.com/aspnet/control_checkbox.asp

そこを見てください。「チェック済み」でも同じ情報が得られるため、「値」という特別な名前のプロパティは実際には必要ありません。

于 2009-01-07T02:14:33.257 に答える