使用<%#isChecked%>设置复选框表达

时间:2009-03-03 16:02:07

标签: c# .net asp.net

这是我想要实现的一个简化示例;

<asp:CheckBox runat="server" Checked="<%# this.isChecked %>" id="myCheckBox" />

然后在我的代码背后;

public partial class _Default : System.Web.UI.Page 
{
    bool _isChecked = true;

    public string isChecked
    {
        get
        {
            return _isChecked.ToString();
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

我知道,在这种情况下,我可以简单地使用myCheckBox.Checked = true,但我只是将这个例子用于说明目的。真正的控制是一个自定义的控制,但我没有运气这种方法的工作。它似乎忽略了我提供的价值。

使用&lt;%#this.isChecked%&gt;是否有效?以这种方式?

修改

对不起,我匆匆写了这篇文章并意识到我不太清楚我打算将“复选框”作为一个例子。我只是试图将服务器端bool引入ASP控件的任何特定属性,而不一定是复选框控件的“checked”属性。

编辑2: 更新了我的示例以使用字符串属性而不是布尔字段,但它现在在我的ASPX文件中报告以下错误;

  

无法将'string'类型转换为'bool'

2 个答案:

答案 0 :(得分:3)

如果你提供

checked="anything" 

将检查(以HTML格式)。你需要省略checked元素才能检查它,所以这不起作用。


编辑问题后,这是我更新的答案:

我不会尝试在aspx页面中设置属性,而是使用ID并在代码中执行。

例如

<asp:Control ID="uxMyControl" runat="server" attributes="other"... />

代码背后:

private Boolean mypropery = false;

Page_Load(object sender, EventArgs e)
{
    this.myproperty = true;
    uxMyControl.attributes = myproperty;
}

答案 1 :(得分:2)

不,因为你要返回一个bool而不是字符串(类型转换问题),你需要一个属性而不是一个字段来处理数据绑定表达式,而且有些浏览器不会正确地使用“真假”。相反,他们希望看到checked="checked"检查框,或者没有任何内容可以取消检查。

根据您的编辑,我怀疑您在其他地方尝试设置isChecked布尔值的代码。现在代码失败,因为isChecked名称指向字符串属性。更新它以设置_isChecked。