向我解释这行代码的功能

时间:2016-06-24 02:41:49

标签: c# asp.net

当我在MasterPage .FindControl in Class中搜索我的问题的答案时,我偶然发现了这个解决方案,但这些代码行做了什么?有谁可以向我解释一下?

var pageHandler = HttpContext.Current.CurrentHandler;
Control ctrlHull = ((Page)pageHandler).Master.FindControl("imgbtnHull");
ImageButton imgBtnHull = (ImageButton)ctrlHull;

我自学C#编程所以我对这门语言知之甚少。

2 个答案:

答案 0 :(得分:2)

// Get the page that is handling the current request.
var pageHandler = HttpContext.Current.CurrentHandler;
// Find the control named "imgbtnHull" on the master page.
Control ctrlHull = ((Page)pageHandler).Master.FindControl("imgbtnHull");
// Cast the control to type ImageButton.
ImageButton imgBtnHull = (ImageButton)ctrlHull;

所以基本上,它抓住了一个名为" imgbtnHull"的ImageButton的引用。在当前页面的母版页中定义。

答案 1 :(得分:1)

谨防在此行中获取NullReference var A = [1, 2, 3, 4]; var res = A.concat(A); console.log(A, res);因此,我建议您在将(ImageButton)ctrlHull转换为null之前检查ctrlHull。让我解释其余的代码:

  

此代码段要执行的预期操作是在当前页面的母版页中找到名为(ImageButton)的ImageButton。

这可以通过以下方式实现:

  • imgbtnHull:HttpContext本身就是一个 对象,您可以从中访问当前的服务页面 自页面实现以来HttpContext.Current.CurrentHandler 的IHttpHandler
  • 第二行将为您提供继承当前页面的Master Page。然后HttpContext.Current.CurrentHandler在当前命名容器中搜索具有指定id参数的服务器控件。将返回指定的控件,如果指定的控件不存在,则返回null(这是我提到的第一点,.FindControl)。
  • 最后,代码将控件转换为图像按钮并分配给NullReference

以下是修改后的代码:

imgBtnHull