【问题标题】:Server tags not working inside asp controls服务器标签在 asp 控件中不起作用
【发布时间】:2026-02-12 15:15:02
【问题描述】:

快点来吧:

  • 我想在更改或页面加载时动态设置日历扩展器的开始日期和结束日期
  • 这些值被放入 .ascx 的隐藏字段中,并在页面加载期间填充(如果不是回发)
  • 一组日历扩展器位于网格视图的项目模板字段中,称之为 set A
  • 其他的都在一个普通的 html 表格中 - set b

设置 a 和设置 b 有标志 StartDate="<%# hfStart.value%>" EndDate="<%# hfEnd.value%>"

在网格视图列的项目模板中设置一个就像一个魅力

set b 在 HTML 表格中似乎根本不起作用

什么给了?

到目前为止,我已经尝试了其他具有相同代码的服务器标签,但我显然错过了显着的细节。为什么一个有效而另一个无效?

更新:尝试过

  • CDate(hfstart.value).ToString 带有
  • <%= hfstart.value %>

除非我误解,否则

【问题讨论】:

  • 我应该指出,我当然可以在后面的代码中处理这个问题,我想知道我在服务器标签和 ASP 方面缺少什么
  • 我认为您的服务器标签中缺少一些 % 字符。

标签: asp.net hidden-field server-tags


【解决方案1】:

事实证明,您确实需要在 asp 标签中使用 <%# %>,因为其他标签(如 <% %><%= %>)在 ASP.NET 生命周期结束时执行并将缓冲区吐出到天知道在哪里。但是,当使用<%# %> 时,asp 控件需要在适当的时候为DataBound();

这对于在gridview 中<item template> 标记中建模的控件会自动发生,因为gridview 中的所有内容都绑定在其gridview.DataBound() 命令上。

【讨论】:

    【解决方案2】:

    可能是因为您使用的是用于数据绑定的<%# %> 标签吗?这可以解释为什么它们在 GridView 中工作,因为它支持数据绑定。

    但是,在基本的 HTML 表格中,您应该改用 <% %> 标签,或使用 <%= %> 来调用方法。

    有关标签类型的完整详细信息,请尝试this reference

    【讨论】:

    • 明确地说,数据绑定在 asp:calendarextender 标签中,而这些标签又位于 HTML 表格或 gridview 中