如果是已知对象,最好通过ID引用对象或将发送者强制转换为对象类型吗?
<asp:Button runat="server" ID="customBTN" OnClick="customBTN_Click" Text="Click Me" />
按ID:
protected void customBTN_Click(object sender, EventArgs e)
{
customBTN.Text = "Clicked.";
}
VS
型铸造:
protected void customBTN_Click(object sender, EventArgs e)
{
(sender as Button).Text = "Clicked.";
}
我假设通过ID引用可能更好,因为不涉及演员,但是想知道在事件处理中使用发送者对象是否可能是更好的做法。
答案 0 :(得分:2)
您的假设是正确的,ID的引用更好。
原因不是因为它不涉及强制转换,而是在您引用控件名称时更容易理解,并且它清楚地表明您只能使用特定按钮。
如果这是一种通用的,可以考虑进行投射,并且可以绑定到多个按钮。
答案 1 :(得分:1)
考虑这一点(但不太可能 - 但可能会发生):
<asp:Button runat="server" ID="customBTN" OnClick="customBTN_Click" Text="Click Me" />
<asp:Button runat="server" ID="custom1BTN" OnClick="customBTN_Click" Text="Click Me" />
<asp:Button runat="server" ID="custom2BTN" OnClick="customBTN_Click" Text="Click Me" />
订阅相同事件的许多按钮 - 您的第二个示例将更改按钮的文本而不知道单击了哪个按钮,而第一个示例是明确的并清楚您的意图是什么。
除此之外,在你的第二个例子中,你需要一种方法来区分实际按下了哪个按钮,这样你就可以(sender as Control).ID
获取ID值并对这个值执行一些逻辑。