Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
Asp.net 将函数放在类中而不是放在代码后面_Asp.net - Fatal编程技术网

Asp.net 将函数放在类中而不是放在代码后面

Asp.net 将函数放在类中而不是放在代码后面,asp.net,Asp.net,我在代码隐藏文件中有一个函数,用于响应gridview事件: protected void GridviewEval(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { foreach (TableCell cell in e.Row.Cells) { if (cell.Text == "0") { cell

我在代码隐藏文件中有一个函数,用于响应gridview事件:

protected void GridviewEval(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
      foreach (TableCell cell in e.Row.Cells)
      {
       if (cell.Text == "0") { cell.Text = "-"; }
      }
} }

它当前位于页面的代码隐藏中,我将在其他页面中使用它。我想在其他页面中使用相同的代码。当我将函数剪切并粘贴到类中时,它不起作用

我相信这很简单,但我搞不懂


谢谢。

至少有两种方法。或者从您创建的类派生页面代码隐藏类并将代码移动到该类,或者使用代理机制,其中您有一个单独的类,一个单例类或一个静态类,并让页面中的方法简单地充当代理,将调用传递给singleton/static类。

此方法很容易是静态的,因此在静态类中只需一个静态方法,您就可以自由使用

public static class CommonEventHandlers
{
   public static void GridviewEval(object sender, GridViewRowEventArgs e)
   {
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
        foreach (TableCell cell in e.Row.Cells)
        {
           if (cell.Text == "0") { cell.Text = "-"; }
        }
      }
   }    
}
然后在gridview的页面上,像这样连接事件

myGrid.SomeEvent += new SomeEventHandler(CommonEventHandlers.GridviewEval)

您能在外部类中显示代码吗?只是澄清一下:在新页面中为gridview事件之一连接事件处理程序,然后将调用转发到已提取到类模块中的方法?看来这应该行得通。还有别的事吗?也许您可以在“GridHelper”类中发布gridview的标记、事件处理程序和方法声明。当我将其放入类文件中时,void关键字用红色下划线标出,并显示消息Expected class、delegate、enum…您记得将方法放入类中吗?从技术上讲,没有类文件这样的东西。Visual Studio在其“新项”列表中有它,但它只是一个编译器将编译的扩展名为.cs的文本文件。它告诉我GridViewRowEventArgs和DataControlRowType不是上下文的一部分,缺少指令。我尝试添加一些“using”子句,但我想我没有把正确的放在适当的位置。我很困惑。如果你连基本知识都没有,那就不容易了。。。using指令(C#Reference)您需要一个using指令来指定类型所在的名称空间。