मैं एक चेकबॉक्स एक ASP.NET प्रपत्र पर आवश्यक कैसे करूं?

वोट
102

मैं इस पर कुछ खोज किया है, और मैं कई आंशिक जवाब मिल गया है, फिर भी कुछ नहीं है कि मुझे देता है कि फजी इस ऐसा करने के लिए सही तरीका है गर्म। इस सवाल के खिलाफ सबसे अधिक बार होने वाली शिकायत का जवाब के लिए: चेक बॉक्स दो वैध राज्यों में हो सकता है - की जाँच की और अनियंत्रित, यह है एक मैं नियम और शर्तें स्वीकार करें ... चेकबॉक्स जो क्रम में जाँच की जानी चाहिए एक पंजीकरण पूरा करने, इसलिए बॉक्स का चयन कर एक व्यापार तर्क दृष्टि से आवश्यक है।

पूरा कटौती-एन-पेस्ट प्रदान करते हैं अपने जवाब के साथ तैयार कोड टुकड़े कृपया! मुझे पता है कि यह करने के लिए कई टुकड़े कर रहे हैं - CustomValidator (शायद), कोड-पीछे, कुछ जावास्क्रिप्ट और संभवतः अगर है के लिए एक चेक, और मेरे लिए निराशा होती हिस्सा है, कि प्रत्येक उदाहरण में मैंने देखा है है इन महत्वपूर्ण में से एक टुकड़े याद आ रही है!

04/08/2009 को 16:15
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


6 जवाब

वोट
-1

गैर जावास्क्रिप्ट तरीका है। । aspx पेज:

 <form id="form1" runat="server">
<div>
    <asp:CheckBox ID="CheckBox1" runat="server" />
    <asp:CustomValidator ID="CustomValidator1"
        runat="server" ErrorMessage="CustomValidator" ControlToValidate="CheckBox1"></asp:CustomValidator>
</div>
</form>

कोड के पीछे:

Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
    If Not CheckBox1.Checked Then
        args.IsValid = False
    End If
End Sub

किसी भी कार्रवाई के लिए आप की आवश्यकता हो सकती (व्यापार नियम):

If Page.IsValid Then
   'do logic
End If 

VB कोड के लिए खेद है। । । आप इसे सी # करने के लिए परिवर्तित कर सकते हैं कि यदि आपके खुशी है। कंपनी के लिए मैं काम कर रहा हूँ अभी वीबी की आवश्यकता है :(

04/08/2009 को 16:36
का स्रोत उपयोगकर्ता

वोट
202

ग्राहक साइड सत्यापन (jQuery का उपयोग) के लिए जावास्क्रिप्ट समारोह ...

function CheckBoxRequired_ClientValidate(sender, e)
{
    e.IsValid = jQuery(".AcceptedAgreement input:checkbox").is(':checked');
}

सर्वर साइड सत्यापन के लिए कोड-पीछे ...

protected void CheckBoxRequired_ServerValidate(object sender, ServerValidateEventArgs e)
{
    e.IsValid = MyCheckBox.Checked;
}

चेकबॉक्स और सत्यापनकर्ता के लिए ASP.Net कोड ...

<asp:CheckBox runat="server" ID="MyCheckBox" CssClass="AcceptedAgreement" />
<asp:CustomValidator runat="server" ID="CheckBoxRequired" EnableClientScript="true"
    OnServerValidate="CheckBoxRequired_ServerValidate"
    ClientValidationFunction="CheckBoxRequired_ClientValidate">You must select this box to proceed.</asp:CustomValidator>

और अंत में, अपने पोस्टबैक में - एक बटन या जो कुछ भी से है कि क्या ...

if (Page.IsValid)
{
    // your code here...
}
04/08/2009 को 16:37
का स्रोत उपयोगकर्ता

वोट
17

सी # एंड्रयू जवाब के संस्करण:

<asp:CustomValidator ID="CustomValidator1" runat="server" 
        ErrorMessage="Please accept the terms..." 
        onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
    <asp:CheckBox ID="CheckBox1" runat="server" />

कोड के पीछे:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = CheckBox1.Checked;
}
04/08/2009 को 16:39
का स्रोत उपयोगकर्ता

वोट
4

स्कॉट के जवाब चेक बॉक्स की कक्षाओं के लिए काम करेंगे। आप अलग-अलग चेक बॉक्स चाहते हैं, आप एक छोटे से sneakier रहना होगा। आप बस एक ही बॉक्स कर रहे हैं, यह ID के साथ यह करने के लिए बेहतर है। इस उदाहरण विशिष्ट चेक बॉक्स से यह करता है और jQuery आवश्यकता नहीं है। यह भी कि कैसे आप अपने जावास्क्रिप्ट में उन परेशान करने या नियंत्रण ID प्राप्त कर सकते हैं की एक अच्छी छोटी उदाहरण है।

.ascx:

<script type="text/javascript">

    function checkAgreement(source, args)
    {                
        var elem = document.getElementById('<%= chkAgree.ClientID %>');
        if (elem.checked)
        {
            args.IsValid = true;
        }
        else
        {        
            args.IsValid = false;
        }
    }

    function checkAge(source, args)
    {
        var elem = document.getElementById('<%= chkAge.ClientID %>');
        if (elem.checked)
        {
            args.IsValid = true;
        }
        else
        {
            args.IsValid = false;
        }    
    }

</script>

<asp:CheckBox ID="chkAgree" runat="server" />
<asp:Label AssociatedControlID="chkAgree" runat="server">I agree to the</asp:Label>
<asp:HyperLink ID="lnkTerms" runat="server">Terms & Conditions</asp:HyperLink>
<asp:Label AssociatedControlID="chkAgree" runat="server">.</asp:Label>
<br />

<asp:CustomValidator ID="chkAgreeValidator" runat="server" Display="Dynamic"
    ClientValidationFunction="checkAgreement">
    You must agree to the terms and conditions.
    </asp:CustomValidator>

<asp:CheckBox ID="chkAge" runat="server" />
<asp:Label AssociatedControlID="chkAge" runat="server">I certify that I am at least 18 years of age.</asp:Label>        
<asp:CustomValidator ID="chkAgeValidator" runat="server" Display="Dynamic"
    ClientValidationFunction="checkAge">
    You must be 18 years or older to continue.
    </asp:CustomValidator>

और codebehind:

Protected Sub chkAgreeValidator_ServerValidate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ServerValidateEventArgs) _
Handles chkAgreeValidator.ServerValidate
    e.IsValid = chkAgree.Checked
End Sub

Protected Sub chkAgeValidator_ServerValidate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ServerValidateEventArgs) _
Handles chkAgeValidator.ServerValidate
    e.IsValid = chkAge.Checked
End Sub
18/02/2010 को 00:06
का स्रोत उपयोगकर्ता

वोट
10

आप एक सच्चे सत्यापनकर्ता कि jQuery पर निर्भर नहीं करता और सर्वर साइड सत्यापन के साथ-साथ संभालती चाहते हैं (और आप ऐसा करना चाहिए। सर्वर साइड सत्यापन सबसे महत्वपूर्ण हिस्सा है) तो यहाँ एक नियंत्रण है

public class RequiredCheckBoxValidator : System.Web.UI.WebControls.BaseValidator
{
    private System.Web.UI.WebControls.CheckBox _ctrlToValidate = null;
    protected System.Web.UI.WebControls.CheckBox CheckBoxToValidate
    {
        get
        {
            if (_ctrlToValidate == null)
                _ctrlToValidate = FindControl(this.ControlToValidate) as System.Web.UI.WebControls.CheckBox;

            return _ctrlToValidate;
        }
    }

    protected override bool ControlPropertiesValid()
    {
        if (this.ControlToValidate.Length == 0)
            throw new System.Web.HttpException(string.Format("The ControlToValidate property of '{0}' is required.", this.ID));

        if (this.CheckBoxToValidate == null)
            throw new System.Web.HttpException(string.Format("This control can only validate CheckBox."));

        return true;
    }

    protected override bool EvaluateIsValid()
    {
        return CheckBoxToValidate.Checked;
    }

    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        if (this.Visible && this.Enabled)
        {
            System.Web.UI.ClientScriptManager cs = this.Page.ClientScript;
            if (this.DetermineRenderUplevel() && this.EnableClientScript)
            {
                cs.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "cb_verify", false);
            }
            if (!this.Page.ClientScript.IsClientScriptBlockRegistered(this.GetType().FullName))
            {
                cs.RegisterClientScriptBlock(this.GetType(), this.GetType().FullName, GetClientSideScript());
            } 
        }
    }

    private string GetClientSideScript()
    {
        return @"<script language=""javascript"">function cb_verify(sender) {var cntrl = document.getElementById(sender.controltovalidate);return cntrl.checked;}</script>";
    }
}
07/12/2011 को 03:21
का स्रोत उपयोगकर्ता

वोट
2

मैं आम तौर पर ग्राहक के पक्ष सत्यापन करते हैं:

<asp:checkbox id="chkTerms" text=" I agree to the terms" ValidationGroup="vg" runat="Server"  />
<asp:CustomValidator id="vTerms"
                ClientValidationFunction="validateTerms" 
                ErrorMessage="<br/>Terms and Conditions are required." 
                ForeColor="Red"
                Display="Static"
                EnableClientScript="true"
                ValidationGroup="vg"
                runat="server"/>

<asp:Button ID="btnSubmit" OnClick="btnSubmit_Click" CausesValidation="true" Text="Submit" ValidationGroup="vg" runat="server" />

<script>
    function validateTerms(source, arguments) {
        var $c = $('#<%= chkTerms.ClientID %>');
        if($c.prop("checked")){
            arguments.IsValid = true;
        } else {
            arguments.IsValid = false;
        }
    }
</script>       
06/02/2015 को 21:35
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more