DateTime.Now.Year以填充RangeValidator中的最大值
本文关键字:最大值 RangeValidator 填充 Now Year DateTime | 更新日期: 2023-09-27 18:22:05
我正在使用RangeValidator来验证年份是否介于静态开始年份和动态结束年份(当前年份)之间。我正在为以这种方式设置最大值画一个巨大的空白:
MaximumValue='<% DateTime.Now.Year %>'
感谢任何帮助,因为我通常不会以这种方式设置最大值。
编辑:因此,我得到了以下方法将代码合并到代码库中:
- 验证器初始化事件
- 页面预呈现器
- 而我是一个新手,只会完成页面加载
哪个最好?
默认情况下,ASP.NET不允许您执行此操作;CCD_ 1语法也不起作用。
最简单的方法是在验证程序的Init
事件中的代码后面设置MaximumValue
属性。(这比页面的Init
、Load
或PreRender
事件要好,后者会使视图状态膨胀。)
protected void rangeValidator_Init(object sender, EventArgs e)
{
((RangeValidator)sender).MaximumValue = DateTime.Now.Year.ToString();
}
通过使用sender
参数,页面上的多个RangeValidator
控件都可以共享此事件处理程序。
如果真的想在.ascx/.aspx中设置MaximumValue
,那么看看这篇博客文章:CodeExpressionBuilder。
UPDATE:在<%= ... %>
1、Load
和PreRender
中设置MaximumValue
都可以。CCD_ 14具有避免增大视图状态大小的微小优点。PreRender
具有dis的额外优势,即如果验证程序的视图状态被禁用,服务器端验证将中断。
它在没有代码绑定的情况下工作
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="TextBox2" ErrorMessage="RangeValidator"
MaximumValue='<%# DateTime.Now.Year %>' MinimumValue="2000"></asp:RangeValidator>
并在页面加载事件中调用此方法
DataBind();
您可以通过代码隐藏来尝试这样做,在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");
}
您需要一个=
来使<% %>
返回评估值。
MaximumValue='<%= DateTime.Now.Year %>'
从using DateTime.Now
更改为DateTime.Today
RangeVal.MinimumValue = DateTime.Today.ToShortDateString();
RangeVal.MaximumValue = DateTime.Today.AddYears(50).ToShortDateString();