我使用一个RangeValidator来验证一年是静态开始年和动态结束年(当前年份)之间的一年。我正在为以这种方式设置最大值而画一个巨大的空白:
MaximumValue='<% DateTime.Now.Year %>'任何帮助都是非常感谢的,因为我通常不会以这种方式设置最大值。
编辑:因此,我得到了以下将代码合并到代码背后的方法:
哪一个是最好的?
发布于 2012-01-30 16:13:09
默认情况下,ASP.NET不允许您这样做;<%= ... %>语法也不起作用。
最简单的方法是在代码隐藏、验证器的MaximumValue事件中设置Init属性。(这比页面的Init、Load或PreRender事件更好,后者会使视图状态膨胀。)
protected void rangeValidator_Init(object sender, EventArgs e)
{
((RangeValidator)sender).MaximumValue = DateTime.Now.Year.ToString();
}通过使用sender参数,页面上的多个RangeValidator控件都可以共享此事件处理程序。
如果您真的想在..ascx/..aspx中设置MaximumValue,那么请看一看这篇博客文章:The CodeExpressionBuilder。
UPDATE:在Init、Load和PreRender中设置MaximumValue都可以。Init有一个小小的优点,即它避免了增加视图状态的大小。PreRender有一个附加的_dis_advantage,如果验证器禁用了视图状态,服务器端验证就会中断。
发布于 2012-01-30 16:29:12
它不需要隐藏代码就能工作。
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="TextBox2" ErrorMessage="RangeValidator"
MaximumValue='<%# DateTime.Now.Year %>' MinimumValue="2000"></asp:RangeValidator>并在页面加载事件中调用此方法。
DataBind();发布于 2012-01-30 16:09:45
您可以这样做,通过代码后面的代码,检查范围验证器文档RangeValidator
aspx标记
<asp:RangeValidator ID="MaxDate" runat="server" ErrorMessage="Some Error message" ControlToValidate="SomeControltoValidate"
Display="Dynamic" Type="Date" ></asp:RangeValidator >文件后面的代码。用于页面预呈现事件。
protected void Page_PreRender(object sender, EventArgs e)
{
MaxDate.MaximumValue = DateTime.Now.Date.AddYears(1).ToString("MM/dd/yyyy");
}https://stackoverflow.com/questions/9066782
复制相似问题