ASP.NET Model Binding,ListView& CheckBox.Checked

时间:2013-02-17 18:40:05

标签: asp.net checkbox .net-4.5 model-binding

我正在使用ASP.NET 4.5模型绑定来通过编辑在ListView控件中显示项目。

<asp:ListView ID="Results" runat="server" SelectMethod="SelectClientStatus" DataKeyNames="ID" ItemPlaceholderID="itemPlaceHolder" ItemType="ClientStatus" OnItemCommand="Results_ItemCommand" InsertItemPosition="LastItem" UpdateMethod="UpdateClientStatus" InsertMethod="InsertClientStatus">
    <LayoutTemplate>
        <table>
            <tr>
                <th runat="server">
                    <asp:LinkButton ID="SortByDescription" runat="server" ClientIDMode="Static" CommandName="Sort" CommandArgument="Description" Text="Description" />
                </th>
                <th>Active</th>
                <th></th>
            </tr>
            <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
        </table>
        <agp:PagerControl runat="server" ID="PagerControl" />
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <%#: Item.Description%>
            </td>
            <td>
                <%#: Item.IsClientActive %>
            </td>
            <td>
                <asp:LinkButton ID="Edit" runat="server" ClientIDMode="Static" CommandName="Edit" CommandArgument="<%#: Item.ID %>" Text="Edit" />
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>

当我添加EditItemTemplate时,我有一个Checkbox,我正在尝试将Checked属性绑定到模型...

<EditItemTemplate>
    <tr>
        <td>
            <asp:TextBox ID="Description" runat="server" Text="<%#: BindItem.Description%>" />
        </td>
        <td>
            <asp:CheckBox ID="IsActive" runat="server" Checked="<%#: BindItem.IsClientActive %>" />
        </td>
        <td>
            <asp:LinkButton ID="Update" runat="server" ClientIDMode="Static"
                CommandName="Update" CommandArgument="<%#: Item.ID %>"
                Text="Update" />
            <asp:LinkButton ID="Cancel" runat="server" ClientIDMode="Static"
                CommandName="Cancel" CommandArgument="<%#: Item.ID %>"
                Text="Cancel" />
        </td>
    </tr>
</EditItemTemplate>

这是问题的开始,运行页面现在显示“CS0030:无法将类型'字符串'转换为'bool'”的消息,提示行...

<td>
<asp:CheckBox ID="IsActive" runat="server" Checked="<%#: BindItem.IsClientActive %>" />
</td>

我错过了什么?如何将IsClientActive的值绑定到Checkbox控件的Checked属性?值得注意的是,在模型中,IsClientActive属性被定义为布尔值而不是可为空。

1 个答案:

答案 0 :(得分:2)

我的坏; Checked="<%#: BindItem.IsClientActive %>"应该是Checked="<%# BindItem.IsClientActive %>"(请注意遗漏冒号(:))