我有一个条款和条件复选标记,并在复选框的标题上链接了政策。
<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";
}
}
答案 0 :(得分:1)
termsClicked仅在向您显示条款和条件时才有效。当他们回复复选标记时(即使他们以前读过您的条款/条件)也不是这样。您必须使用会话或其他一些持久状态机制(可能是ViewState)来记住他们在某些先前的请求/响应中单击了该链接。
答案 1 :(得分:-1)
确保您的变量是全局声明的吗?。
不要在页面加载事件中声明变量。