【问题标题】:How to use for loop and if Eval() on the frontend of a page with asp.net webforms如何在带有 asp.net webforms 的页面的前端使用 for 循环和 if Eval()
【发布时间】:2022-01-18 00:11:08
【问题描述】:

因此,正如我的问题所述,我想在前端使用 for 循环并在 for 循环中使用 Eval() 的 if 语句,但我似乎无法让它工作。我的评级 eval 将返回一个介于 1 和 5 之间的 n 整数。我收到错误消息“Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。”

 <% for (int i = 1; i <= 5; i++)
   {
      if (i == (int)Eval("ratings"))
       {
      Response.Write("<input type='radio' checked='true' disabled='true' name='rating-star' class='rating__control screen-reader'>");
       }
        else
       {
     Response.Write("<input type='radio' disabled='true' name='rating-star' class='rating__control screen-reader' '>");
       }
   }; %>

【问题讨论】:

    标签: asp.net for-loop webforms frontend eval


    【解决方案1】:

    好的,这是您可能不太清楚的架构问题之一。

    您放入 % 的“即时”并开始使用服务器端“指令”?

    该代码不会“仅仅”在前端运行,因为您将它放在了标​​记中。该代码仍然在服务器端运行 100%。更重要的是,当服务器渲染页面时,代码就会运行。然后整个页面被发送到浏览器端。

    结果呢?

    实际上,在 99% 的情况下,在代码隐藏中编写此类代码会更好。实际上,在大多数情况下,尝试在标记中混入服务器端代码变得更加困难和混乱。

    那么,既然我们已经清除了上述内容?

    第一个问题是您想要选择 1-5。但是,如果您选择了第 3 个,那么当前的第 5 个或第 1 个必须取消选中,对吧?

    由于这个常见问题,最好使用 RadioButton 列表或复选框列表。

    像这样放入一个说单选按钮列表:

            <asp:RadioButtonList ID="RadioButtonList1" runat="server">
            </asp:RadioButtonList>
    

    现在,我们想要 5 个选项,然后使用这个编辑器:

    (当您变得更舒服时,您可以手动编辑标记中的选项)。

    所以我们可以输入 0 - 5 个选项

    像这样:

    请注意我是如何输入 5 和“五”进行显示的。另外,使用属性表 - 设置单元格间距(尝试 10),并设置重复方向 = 水平。

    你会看到这个标记:

            <asp:RadioButtonList ID="RadioButtonList1" runat="server" CellSpacing="10"
                RepeatDirection="Horizontal">
                <asp:ListItem Value="0">Zero</asp:ListItem>
                <asp:ListItem Value="1">One</asp:ListItem>
                <asp:ListItem Value="2">Two</asp:ListItem>
                <asp:ListItem Value="3">Three</asp:ListItem>
                <asp:ListItem Value="4">Four</asp:ListItem>
                <asp:ListItem Value="5">Five</asp:ListItem>
            </asp:RadioButtonList>
    

    我们跑了,看到了这个:

    好的,使用代码来填写选项怎么样。

    好的,让我们尝试另一个 RadioButtion 列表,如下所示:

            <asp:RadioButtonList ID="RadioButtonList2" runat="server"
                RepeatDirection="Horizontal">
    
            </asp:RadioButtonList>
    

    现在代码呢?假设我想要 1 到 10?

    好的,那么我们有这个代码:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                for (int i = 1;i<=10;i++)
                {
                    RadioButtonList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
                }
            }
        }
    

    现在我们运行,我们看到了:

    再一次,真的很好,因为只能选择一个选项 - 我们不必编写任何代码。

    因此,不清楚您是否需要一个单选按钮列表和 10 个选项。

    或者,也许我们想显示 10 家酒店,每家酒店都有 1-5 分要显示?

    同样,我们将使用 GridView(用于酒店列表),并将 RadioButton 列表作为 Grid 的列之一。

    最后但并非最不重要的是?

    也许我们想从数据库中驱动选择?比如说,一个城市列表。

    那么,“请选择你最喜欢的城市?

    让我们放入第三个 RB 列表,我们有这个:

            <asp:RadioButtonList ID="RadioButtonList3" runat="server"
                DataTextField="City"
                DataValueField="ID"  >
            </asp:RadioButtonList>
    

    请注意我们如何添加更多设置 DataValue 字段和 Data 文本字段。所以,我想显示城市列表,但我们使用数据库,我可能想显示文本值,但是当我选择时,我想要数据库 PK 行。

    所以,现在我的代码是这样的:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                for (int i = 1;i<=10;i++)
                {
                    RadioButtonList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
                }
    
                // now load up the city picking Radio button list
                using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
                {
                    string strSQL = "SELECT ID, City from City ORDER BY City";
                    using (SqlCommand cmdSQL = new SqlCommand(strSQL,conn))
                    {
                        conn.Open();
                        RadioButtonList3.DataSource = cmdSQL.ExecuteReader();
                        RadioButtonList3.DataBind();
                    }
                }
            }
        }
    

    现在我们的页面是这样的:

    所以,我希望以上内容能给您一些关于“一般”方法的想法,以及您想要编辑 + 输入值,或者使用一些代码来填写代码,甚至使用代码的选项+ 用于加载 RadioButton 选项的数据库。

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多