Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现用户控件';用户控制之外的方法?_C#_Asp.net_Webusercontrol - Fatal编程技术网

C# 如何实现用户控件';用户控制之外的方法?

C# 如何实现用户控件';用户控制之外的方法?,c#,asp.net,webusercontrol,C#,Asp.net,Webusercontrol,假设我有一个用户控件(SubmitButton),它有一个submit按钮,当用户单击该按钮时,我希望包含SubmitButton实例的控件决定submit按钮的行为 我在user control.cs文件中尝试了以下操作: protected void nextPage_Click(object sender, EventArgs e) { submitData(); Response.Redirect("completed.aspx");

假设我有一个用户控件(SubmitButton),它有一个submit按钮,当用户单击该按钮时,我希望包含SubmitButton实例的控件决定submit按钮的行为

我在user control.cs文件中尝试了以下操作:

    protected void nextPage_Click(object sender, EventArgs e) {

        submitData();

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

    protected abstract void submitData();
但是我不知道submitData方法应该在哪里实现

这就像是方法的占位符。

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


尝试函数委托之类的操作:

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");
        }
    }       

}

您的控件应该公开事件。例如SubmitClicked。而不是在包含它的控件中,您订阅该事件并执行您选择的任何操作。如果您已经公开了事件,您可以将任意多个事件处理程序附加到它


这就是asp:按钮所做的。它公开单击事件,在aspx页面中,您只需订阅该事件并在代码隐藏文件中实现事件处理程序。

这是错误的,因为每次单击后需要不同的效果时,它都需要新类。asp.net中的按钮已经单击了事件,那么为什么要创建一些奇怪的解决方案呢?
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");
        }
    }       

}