通过发件人和e传递更多参数?

时间:2013-01-23 10:39:20

标签: c# javascript asp.net html .net

我在c#代码中有一个函数,如下所示:

protected void UploadFile(Object s, EventArgs e)
{
blah blah blah
}

此功能会将文件上传到服务器。

我打电话给这样的功能:

<asp:Button ID="uploadButton" runat="server" Text="Upload!" OnClick="UploadFile"/>

我想将另一个参数传递给该函数,它将是该文件的名称。

但是我试图在UploadFile添加它并且它不起作用,我该怎么办呢?感谢。

3 个答案:

答案 0 :(得分:4)

这似乎很奇怪,因为您不需要将文件名发送到UploadFile函数。您可以在UploadFile函数本身使用文件名。

protected void UploadFile(Object s, EventArgs e)
{
   // var file = ......
}

另一方面,如果你从另一个控件获得文件名,你可以在UploadFile函数中从这个控件中获取文件名。

protected void UploadFile(Object s, EventArgs e)
{
   var file = textboxX.Text;
}

答案 1 :(得分:1)

这是事件附加到您的Button。您不应该像方法一样调用事件,而是可以将方法逻辑提取到单独的方法,然后使用您的参数调用该方法。就访问FileName而言,您可以从文件文本框中访问它(可能您正在使用它)

protected void UploadFile(Object s, EventArgs e)
{
UploadFileMethod(yourFileTextBox.Text);
}

private void UploadFileMethod(string FileName)
{
 //upload logic
}

并从其他地方调用它。

UploadFileMethod("NewFileName");

答案 2 :(得分:0)

如果你想传递许多参数,你应该像这样实现你自己的类:

public class MyEventArgs : EventArgs
{
    public MyEventArgs(params object[] args)
    {
        Args = args;
    }

    public object[] Args { get; set; }
}

您的活动将采用以下形式:

public event EventHandler<MyEventArgs> MyEvent;

举起你的活动:

MyEvent(this, new MyEventArgs(1, "information"));