Bir ASP.NET form üzerinde gerekli onay kutusunu yapabilirim?

oy
102

Sıcak bulanık bu bunu yapmanın doğru yolu olduğunu bana verir ancak hiçbir şey bu biraz arama yaptık ve ben birkaç kısmi cevaplar buldum. Bu soruya karşı en sık geçen şikayeti cevaplamak için: onay kutularını iki meşru duruma sahip olabilir - kontrol ve kontrolsüz, bu bir Şartlar ve koşulları kabul ediyorum ... sırayla kontrol edilmelidir onay kutusu, bir kayıt işlemini tamamlamak için dolayısıyla kutuyu işaretleyerek bir iş mantığı açısından gereklidir.

Kesimli-n yapıştırmak eksiksiz sağlamak için tepki ile hazır kod parçaları edin! Birkaç adet Buna vardır biliyor - CustomValidator (muhtemelen), kod-arkasında, bazı javascript ve IsValid için muhtemelen bir çek ve benim için sinir bozucu bir parçası, her örnekte gördüğüm o bu kritik biridir adet kayıp!

Oluştur 04/08/2009 saat 16:15
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
-1

Sigara javascript yol. . aspx sayfası:

 <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>

Kod Arkası:

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

Herhangi eylemler için, (iş kuralları) gerekebilir:

If Page.IsValid Then
   'do logic
End If 

VB kodu için üzgünüm. . . bu zevk eğer C # dönüştürebilirsiniz. Şu an için çalışıyorum şirket VB gerektirir :(

Cevap 04/08/2009 saat 16:36
kaynak kullanıcı

oy
202

(JQuery kullanarak) istemci tarafı doğrulama için JavaScript işlevi ...

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

sunucu tarafında doğrulama için arka plan kod ...

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

onay kutusu ve doğrulayıcı için ASP.Net kodu ...

<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>

ve son olarak, geri gönderme içinde - bir düğme ya da her türlü olsun ...

if (Page.IsValid)
{
    // your code here...
}
Cevap 04/08/2009 saat 16:37
kaynak kullanıcı

oy
17

C andrew cevabın # sürümü:

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

Kod-arkasında:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = CheckBox1.Checked;
}
Cevap 04/08/2009 saat 16:39
kaynak kullanıcı

oy
4

Scott'ın cevabı onay kutularını sınıfları için çalışacaktır. Tek tek onay kutularını isterseniz, biraz sinsi olmak zorunda. Eğer tek bir kutu yapıyoruz, bu kimlikleri ile yapmak daha iyidir. Bu örnek, belirli onay kutularını ile yapar ve jQuery gerektirmez. Ayrıca size Javascript içine bu sinir bozucu kontrol kimliklerini almak nasıl güzel bir örnek.

.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>

Ve 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
Cevap 18/02/2010 saat 00:06
kaynak kullanıcı

oy
10

Eğer jquery güvenmek ve hem de sunucu tarafında doğrulama kolları olmayan bir gerçek doğrulayıcı isterseniz sonra burada bir kontrol (ve yapmanız gerekir. sunucu tarafında doğrulama en önemli parçasıdır)

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>";
    }
}
Cevap 07/12/2011 saat 03:21
kaynak kullanıcı

oy
2

Genellikle istemci tarafında doğrulama gerçekleştirmek:

<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>       
Cevap 06/02/2015 saat 21:35
kaynak kullanıcı

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