WebForms:DataBind 到派生 CheckBox 控件的文本 属性
WebForms: DataBind to Text Property of derived CheckBox control
我有一个包含 CheckBox 控件的页面:
<asp:CheckBox ID="Save" runat="server" Text='<%= SomePageMethod("param") %>' />
效果很好,SomePageMethod 被调用并且页面在复选框旁边呈现正确的文本。
现在,我们正在做一些测试 WebForms 页面的工作,作为这项工作的一部分,我们构建了一个简单的派生 class 以便我们可以注入一个接口:
namespace MyControls
{
public interface ICheckBox
{
bool Visible { get; set; }
}
public class CheckBox : ICheckBox, System.Web.UI.WebControls.CheckBox
{
}
}
然后我将 class 导入到我的页面上:
<%@ Register Namespace="MyControls" Assembly="MyControls" TagPrefix="vm" %>
并将控件定义更改为:
<vm:CheckBox ID="Save" runat="server" Text='<%= SomePageMethod("param") %>' />
现在,数据绑定表达式从未被调用,所以我的复选框没有文本。
知道为什么这行不通吗?我们使用这些控件所做的几乎所有其他操作都运行良好,但这个让我感到难过。
注意:编辑以消除在制作的界面中具有 Checked
属性 的歧义。
能不能在页面调用data bind这么简单?
我创建了一个反映您要求的小测试,
在我明确调用 DataBind()
之前文本没有绑定
在页面上或单独在每个控件上。
下面是 ASP CheckBox 和自定义 CheckBox 的示例
实现 ICheckBox
TestPage.aspx
...
<vm:CheckBox ID="VmCheckBox" runat="server" Text="<%# GetCheckBoxText(23)%>"/>
<asp:CheckBox ID="AspCheckBox" runat="server" Text="<%# GetCheckBoxText(23)%>" />
注意 我在活页夹中使用了 #
而不是 =
,即 <%# ... %>
TestPage.aspx.cs
...
protected void Page_Load(object sender, EventArgs e)
{
DataBind() // Binds all objects on page
// ...Or individually bind controls
VmCheckBox.DataBind()
AspCheckBox.DataBind()
}
我有一个包含 CheckBox 控件的页面:
<asp:CheckBox ID="Save" runat="server" Text='<%= SomePageMethod("param") %>' />
效果很好,SomePageMethod 被调用并且页面在复选框旁边呈现正确的文本。
现在,我们正在做一些测试 WebForms 页面的工作,作为这项工作的一部分,我们构建了一个简单的派生 class 以便我们可以注入一个接口:
namespace MyControls
{
public interface ICheckBox
{
bool Visible { get; set; }
}
public class CheckBox : ICheckBox, System.Web.UI.WebControls.CheckBox
{
}
}
然后我将 class 导入到我的页面上:
<%@ Register Namespace="MyControls" Assembly="MyControls" TagPrefix="vm" %>
并将控件定义更改为:
<vm:CheckBox ID="Save" runat="server" Text='<%= SomePageMethod("param") %>' />
现在,数据绑定表达式从未被调用,所以我的复选框没有文本。
知道为什么这行不通吗?我们使用这些控件所做的几乎所有其他操作都运行良好,但这个让我感到难过。
注意:编辑以消除在制作的界面中具有 Checked
属性 的歧义。
能不能在页面调用data bind这么简单?
我创建了一个反映您要求的小测试,
在我明确调用 DataBind()
之前文本没有绑定
在页面上或单独在每个控件上。
下面是 ASP CheckBox 和自定义 CheckBox 的示例
实现 ICheckBox
TestPage.aspx
...
<vm:CheckBox ID="VmCheckBox" runat="server" Text="<%# GetCheckBoxText(23)%>"/>
<asp:CheckBox ID="AspCheckBox" runat="server" Text="<%# GetCheckBoxText(23)%>" />
注意 我在活页夹中使用了 #
而不是 =
,即 <%# ... %>
TestPage.aspx.cs
...
protected void Page_Load(object sender, EventArgs e)
{
DataBind() // Binds all objects on page
// ...Or individually bind controls
VmCheckBox.DataBind()
AspCheckBox.DataBind()
}