Valueプロパティをサポートする.NET CheckBoxコントロール
-
03-07-2019 - |
質問
デフォルトの.NET CheckBoxコントロールはValueプロパティをサポートしていません。入力コントロールはhtml仕様の一部として値をサポートしているため、これは私には奇妙に思えます。
私の質問は、標準のASP .NET CheckBoxおよびCheckBoxListと同様に動作するasp.netのカスタムユーザーコントロールを知っているかどうかです。
解決 5
値はhtmlではレンダリングされませんが、ビューステートに保存されているようです。そのため、CheckboxList.Items()
のListItemオブジェクトにアクセスしたときに、サーバー側で値を取得できました。他のヒント
あなたの質問を誤解しているかもしれませんが、一般的な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チェックボックスのvalueプロパティを任意に設定できます。
サーバー側でのみアクセスする必要がある場合は、チェックボックスコントロールを継承するサーバーコントロールを簡単に作成し、値と呼ばれるプロパティをサーバー側から設定および取得できるプロパティに追加できます。
ただし、クライアント側からアクセスする必要がある場合は、サーバーコントロールがレンダリングするものを想像する必要があります-おそらく、チェックボックスと非表示フィールドの組み合わせで、非表示フィールドに値が含まれます。
サーバー側でチェックボックスの値を抽出するだけなら、チェックボックスコントロールの単純な拡張で十分だと思います-サーバーから設定および取得できる追加のプロパティを追加しますサイド...公園を散歩。
いいえ、同じではありません
作業中の機能では、製品のアップグレードのリストをCheckBoxのリストとして表示する必要があります。どのチェックボックスが<!> quot; checked <!> quot;に基づいているかそれらを製品に追加する必要があります。 CheckBoxListの項目は動的であるため、チェックされた項目を反復処理するとき、何らかの一意の識別子が必要です。 <!> quot;チェック済み<!> quot;値はブール値のみです
ここでMSが行ったのは、ASPコントロールが.net感覚で作成されたことです。ただし、ブラウザで動作するはずなので、標準のHTMLコントロールとしてレンダリングします。
したがって、コードビハインドcs / vbには.Checked(bool)が表示されますが、client / javascriptには.valueが表示されます。
一意の識別子が必要な場合は、IDまたはClientIDを確認する必要があります。または、属性をチェックボックス(.Attributes.Add())に追加して使用することもできます。
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);
}
}
これは古い質問ですが、状況は変わりました。まず、asp.net 4.6では、value属性がチェックボックスに設定されます。 ListBoxクラスを使用してチェックボックスを生成するCheckBoxListに関連する回答はほとんどありません。
4.6より前の私のソリューションは、データ属性を追加することです。これにより、javascriptで検索できるチェックボックスとラベルの周りに<span>
コントロールが作成されます。
foreach( ListItem item in selCheckList.Items)
{
item.Attributes["data-role-id"] = item.Value;
}
<!> quot;チェックされていない<!> quot; <!> quot; Value <!> quot;?
と同じhttp://www.w3schools.com/aspnet/control_checkbox.asp
そこを見てください。 <!> quot; Checked <!> quot;という理由で、特に<!> quot; Value <!> quot;という名前のプロパティは必要ありません。同じ情報を提供します。