如何使用内联代码设置复选框的值

时间:2013-10-16 02:54:20

标签: html asp.net checkbox inline-code

我有一个在循环中动态创建的复选框列表,当我尝试使用内联代码设置值时,它只是给我内联代码而不进行评估。这是一个例子:

<ul>
   <%
    string testValue = string.Empty;
    for(int index = 0; index < 5; index++)
    {
        testValue = "blah" + index;
     %>
        <li>
            <input type="checkbox" runat="server" value="<%= testValue %>" />
        </li>
    <%
    }
     %>
</ul>

这是我得到的输出:

<ul>        
<li>
   <input name="ctl00$MainContent$ctl00" type="checkbox" value="&lt;%= testValue %>" />
</li>

<li>
    <input name="ctl00$MainContent$ctl00" type="checkbox" value="&lt;%= testValue %>" />
</li>

<li>
     <input name="ctl00$MainContent$ctl00" type="checkbox" value="&lt;%= testValue %>" />
</li>

<li>
      <input name="ctl00$MainContent$ctl00" type="checkbox" value="&lt;%= testValue %>" />
</li>

<li>
      <input name="ctl00$MainContent$ctl00" type="checkbox" value="&lt;%= testValue %>" />
</li>
</ul>

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

由于您已经使用runat="server",我建议您只使用服务器端控件来管理动态内容,例如:

<ul>
    <asp:Repeater ID="Repeater1" runat="server" 
                  OnItemDataBound="Repeater1_ItemDataBound">
        <ItemTemplate>
            <li>
                <asp:CheckBox id="check1" runat="server" />
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

现在绑定转发器(OnItemDataBound)时,您可以访问复选框的.Text属性,如下所示:

protected void Repeater1_ItemDataBound(Object sender, RepeaterItemEventArgs e) 
{
    // This event is raised for the header, the footer, separators, and items.
    // Execute the following logic for Items and Alternating Items.
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    {
        CheckBox theCheckBox = e.Item.FindControl("check1") as CheckBox;

        // Make sure we found the check box before we try to use it
        if(theCheckBox != null)
        {
            theCheckBox.Text = "Your Text Value Here";
        }
    }
}

注意:使用代码隐藏可以让您更轻松地利用Visual Studio调试器的强大功能,并使用IntelliSense帮助减少拼写错误,并在编译时捕获更多问题,而不是运行时。

答案 1 :(得分:-1)

[回答编辑]尝试使用“&amp;”设置testValue,如下所示和“.ToString()”用于字符串连接:

<ul>
   <%
    string testValue = string.Empty;
    for(int index = 0; index < 5; index++)
    {
        testValue = "blah" & index.ToString();
     %>
        <li>
            <input type="checkbox" runat="server" value="<%=testValue %>" />
        </li>
    <%
    }
     %>
</ul>

答案 2 :(得分:-1)

你不能这样做,它看起来像PHP风格。如果您使用的是ASP.Net,那么您应该完全改变您的代码风格