在表单中构建下拉选择:在此上下文中不支持代码块

发布于 2024-12-05 11:20:13 字数 421 浏览 0 评论 0原文

我正在尝试做一些我认为很简单的事情[能够以这种方式在 PHP 中完成] 但 aspx 正在抱怨...代码应该构建一个下拉菜单,其中包含从 x 到 y 的数字,我将其写为:

<asp:DropDownList runat="server" ID='DOBD'><asp:ListItem value=''>---</asp:ListItem>
<% for (int i = 1;i<32;i++) { %>
<asp:ListItem value='<%= i %>'><%= i %></asp:ListItem>
<% } %>
</asp:DropDownList>

我是收到代码块错误并且不知道该怎么办。 预先感谢您的帮助!

I am trying to do something i thought was straightforward [able to do it in PHP this way] but aspx is complaining... the code should build a drop down menu with the numbers from x to y and i wrote it as:

<asp:DropDownList runat="server" ID='DOBD'><asp:ListItem value=''>---</asp:ListItem>
<% for (int i = 1;i<32;i++) { %>
<asp:ListItem value='<%= i %>'><%= i %></asp:ListItem>
<% } %>
</asp:DropDownList>

i am getting the code block error and not sure what to do.
thank you in advance for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

愛放△進行李 2024-12-12 11:20:13

在代码隐藏类中添加项目。您可以使用控件的 id 访问任何控件:

this.DOBD.Items.Add(new ListItem("----"));
for (int i = 1; i < 32; i++)
{
    this.DOBD.Items.Add(new ListItem(i.ToString()));
}

此外,您还可以保留 ---但在这种情况下,您需要将 AppendDataBoundItems 设置为 true

<asp:DropDownList ID="DOBD" runat="server" AppendDataBoundItems="true"></asp:DropDownList>

另外,没有代码隐藏类的解决方案:

<%
    for (int i = 1; i < 32; i++)
    {
        this.DOBD.Items.Add(new ListItem(i.ToString()));
    }
%>
<asp:DropDownList ID="DOBD" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="---"></asp:ListItem>
</asp:DropDownList>

Add items in the codebehind class. You can access any control using id of the control:

this.DOBD.Items.Add(new ListItem("----"));
for (int i = 1; i < 32; i++)
{
    this.DOBD.Items.Add(new ListItem(i.ToString()));
}

also, you can leave your <asp:ListItem value=''>---</asp:ListItem> but in this case you need to set AppendDataBoundItems to true:

<asp:DropDownList ID="DOBD" runat="server" AppendDataBoundItems="true"></asp:DropDownList>

Also, solution without codebehind class:

<%
    for (int i = 1; i < 32; i++)
    {
        this.DOBD.Items.Add(new ListItem(i.ToString()));
    }
%>
<asp:DropDownList ID="DOBD" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="---"></asp:ListItem>
</asp:DropDownList>
雨后彩虹 2024-12-12 11:20:13

作为 Samich 的回答,您可以使用 DataSource 来填充下拉列表:

<asp:DropDownList runat="server" ID='DOBD' 
     DataSource='<%# System.Linq.Enumerable.Range(1, 32) %>'>
</asp:DropDownList>

<script runat="server"> 
  protected void Page_Load(object sender, EventArgs e)
  { 
     if(! IsPostback) {
        DOBD.DataBind();
     }
  }
</script>

或 ObjectDataSource

As an alternative to Samich's answer, you can use a DataSource to fill the dropdown:

<asp:DropDownList runat="server" ID='DOBD' 
     DataSource='<%# System.Linq.Enumerable.Range(1, 32) %>'>
</asp:DropDownList>

<script runat="server"> 
  protected void Page_Load(object sender, EventArgs e)
  { 
     if(! IsPostback) {
        DOBD.DataBind();
     }
  }
</script>

or a ObjectDataSource

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文