这是我想要实现的一个简化示例;
<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'
答案 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。