如何在用户控件之外实现用户控件的方法?

时间:2011-07-03 18:52:15

标签: c# asp.net webusercontrol

假设我有一个用户控件(SubmitButton),其中有一个提交按钮,当用户点击时,我希望包含SubmitButton实例的控件决定提交按钮的行为。

我在用户控件.cs文件中尝试了以下内容:

    protected void nextPage_Click(object sender, EventArgs e) {

        submitData();

        Response.Redirect("completed.aspx");
    }

    protected abstract void submitData();

但我不知道应该在哪里实现submitData方法。

它就像方法的占位符。

3 个答案:

答案 0 :(得分:1)

您的控件应该公开事件。例如SubmitClicked。比在包含它的控制中你订阅该事件并做你选择做的任何事情。如果您有事件暴露您可以随意附加任意数量的事件处理程序。

这就是asp:Button已经做到的。它暴露了Click事件并在aspx页面中您只需订阅该事件并在您的代码隐藏文件中实现事件处理程序。

答案 1 :(得分:0)

这将是abstract class。您永远不能创建这些实例,您必须创建自己的类继承它并实现抽象方法和属性。 例如:

public class MySubmitButton : SubmitButton {
  protected override void submitData() {
    // do somthing
  }
}

答案 2 :(得分:0)

尝试类似函数委托:

using System;

namespace ConsoleApplication1
{
    public delegate void FunctionToBeCalled();

    public class A
    {
        public FunctionToBeCalled Function;

        public void Test()
        {
            Function();
            Console.WriteLine("test 2");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            A instanceA = new A();
            instanceA.Function = TheFunction;
            instanceA.Test();
        }

        static void TheFunction()
        {
            Console.WriteLine("test 1");
        }
    }       

}