首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTime.Now.Year在RangeValidator中填充最大值

DateTime.Now.Year在RangeValidator中填充最大值
EN

Stack Overflow用户
提问于 2012-01-30 16:01:48
回答 5查看 14.1K关注 0票数 2

我使用一个RangeValidator来验证一年是静态开始年和动态结束年(当前年份)之间的一年。我正在为以这种方式设置最大值而画一个巨大的空白:

代码语言:javascript
复制
MaximumValue='<% DateTime.Now.Year %>'

任何帮助都是非常感谢的,因为我通常不会以这种方式设置最大值。

编辑:因此,我得到了以下将代码合并到代码背后的方法:

  1. 验证器init事件
  2. 页面预存器
  3. 我是个新手,会在页面上完成的

哪一个是最好的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-30 16:13:09

默认情况下,ASP.NET不允许您这样做;<%= ... %>语法也不起作用。

最简单的方法是在代码隐藏、验证器的MaximumValue事件中设置Init属性。(这比页面的InitLoadPreRender事件更好,后者会使视图状态膨胀。)

代码语言:javascript
复制
protected void rangeValidator_Init(object sender, EventArgs e)
{
    ((RangeValidator)sender).MaximumValue = DateTime.Now.Year.ToString();
}

通过使用sender参数,页面上的多个RangeValidator控件都可以共享此事件处理程序。

如果您真的想在..ascx/..aspx中设置MaximumValue,那么请看一看这篇博客文章:The CodeExpressionBuilder

UPDATE:在InitLoadPreRender中设置MaximumValue都可以。Init有一个小小的优点,即它避免了增加视图状态的大小。PreRender有一个附加的_dis_advantage,如果验证器禁用了视图状态,服务器端验证就会中断。

票数 12
EN

Stack Overflow用户

发布于 2012-01-30 16:29:12

它不需要隐藏代码就能工作。

代码语言:javascript
复制
 <asp:RangeValidator ID="RangeValidator1" runat="server" 
        ControlToValidate="TextBox2" ErrorMessage="RangeValidator" 
        MaximumValue='<%# DateTime.Now.Year %>' MinimumValue="2000"></asp:RangeValidator>

并在页面加载事件中调用此方法。

代码语言:javascript
复制
  DataBind();
票数 5
EN

Stack Overflow用户

发布于 2012-01-30 16:09:45

您可以这样做,通过代码后面的代码,检查范围验证器文档RangeValidator

aspx标记

代码语言:javascript
复制
<asp:RangeValidator ID="MaxDate" runat="server" ErrorMessage="Some Error message" ControlToValidate="SomeControltoValidate" 
 Display="Dynamic" Type="Date" ></asp:RangeValidator >

文件后面的代码。用于页面预呈现事件。

代码语言:javascript
复制
 protected void Page_PreRender(object sender, EventArgs e)
{
      MaxDate.MaximumValue = DateTime.Now.Date.AddYears(1).ToString("MM/dd/yyyy");
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9066782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档