在开发方案中,用户控件插入位于顶级的页,该页可能包含一个或多个窗体。该页和每个用户控件上的控件可以引用彼此内部包含的窗体,依照的原则如下:
当页上的控件引用子用户控件内的窗体时,URL 必须包含窗体的完整唯一 ID(格式为 ucid:formid,其中 ucid 是用户控件的 ID,formid 是窗体的 ID)。
当用户控件内的控件引用窗体时,ASP.NET 首先在用户控件中搜索窗体,然后在它的父级中搜索,依此类推,一直搜索到页级。
例如,假定页包含两个窗体,其 ID 分别为 FormA 和 FormB。此页还包含一个 ID 为 Control1 的顶级用户控件。此用户控件包含两个附加的窗体,其 ID 为 FormA 和 FormC。
下面列出了几种常见的组合,即组合后的效果:
控件位置:在页上
窗体URL:#FormA
产生的效果:链接到页本身上的 FormA。
控件位置:在页上
窗体URL:#FormC
产生的效果:引发异常,因为窗体不包含任何具有指定 ID 的窗体。
控件位置:在页上
窗体URL:#Control1:FormA
产生的效果:链接到用户控件中的 FormA。
控件位置:在用户控件中
窗体URL:#FormA
产生的效果:链接到用户控件中的 FormA,因为 ASP.NET 首先在用户控件本身内搜索。
控件位置:在用户控件中
窗体URL:#FormB
产生的效果:链接到页上的 FormB,因为 ASP.NET 最终将窗体引用解析为相对于用户控件的父级。