已检查验证链接是否已注册

时间:2012-11-20 16:37:03

标签: c# asp.net validation

我有一个条款和条件复选标记,并在复选框的标题上链接了政策。

<div>
    <asp:CheckBox runat="server" ID="ckIAgree" ClientIDMode="Static" Text="" CssClass="pull-left checkbox" ValidationGroup="Security" />
    <span class="termsconditions">I have read and agree to the site <asp:LinkButton runat="server" ID="lnkTermsandConditions" CausesValidation="false" NavigateUrl="#" onclick="onclick_TermsandConditions" Text="Terms and Conditions" />.</span>
    <div class="clearfix"></div>
</div>

在onclick事件中,我将布尔值设置为'true',表示他们已点击该链接。

//Make sure link has been clicked
protected void onclick_TermsandConditions(object sender, EventArgs e)
{
    termsClicked = true;
}

我确实在页面顶部声明了变量,我认为这可能会导致我的问题,因为当我点击条款和条件链接时页面会重新加载。

bool termsClicked = false;

我有一个自定义验证器,确保选中该复选框,然后检查'termsClicked'变量的值。 'termsClicked'变量始终显示为false。

//Validate Terms
protected void cvValidateTerms(object source, ServerValidateEventArgs args)
{
    args.IsValid = ckIAgree.Checked;
    if (termsClicked == false)
    {
        args.IsValid = false;
        cvTermsConditions.ErrorMessage = "You must view the terms and conditions";
    }
}

2 个答案:

答案 0 :(得分:1)

termsClicked仅在向您显示条款和条件时才有效。当他们回复复选标记时(即使他们以前读过您的条款/条件)也不是这样。您必须使用会话或其他一些持久状态机制(可能是ViewState)来记住他们在某些先前的请求/响应中单击了该链接。

答案 1 :(得分:-1)

确保您的变量是全局声明的吗?。

不要在页面加载事件中声明变量。