2011-07-17 29 views
5

He añadido un LinkButton a mi página y obtener de error al depurar dice:CS1061: Compilación mensaje de error

CS1061: 'ASP.uilayer_test_aspx' no contiene una definición para 'lbl_Click' y ningún método de extensión ' lbl_Click' aceptar un primer argumento de tipo 'ASP.uilayer_test_aspx' se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?)

.aspx contiene:

<asp:LinkButton ID="lbl" runat="server" OnClick="lbl_Click">LinkButton</asp:LinkButton> 

página diretive:

<%@ Page Language="C#" MasterPageFile="~/UILayer/UI.Master" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="WebApp.UILayer.Test" Title="Untitled Page" %> 

.cs contiene:

namespace WebApp.UILayer 
{ 
    public partial class Test : System.Web.UI.Page 
    { 
     private void lbl_Click(object sender, EventArgs e) 
     { 
     } 
    } 
} 

Respuesta

9

Tienes que hacer lbl_Click protegida y no privadas.

La razón de esto es que una clase propia, llamada como ASP.uilayer_test_aspx se crea a partir de la fuente aspx. Esta clase hereda de su clase Test. Los métodos privados no son visibles para las clases secundarias, por lo que deben protegerse.

+0

Este fue un salvavidas ^^. Ocurre también si tiene "interno" ... esto debería considerarse un error, compilando bien pero aumentando el error con la versión publicada ... ¿no debería el compilador advertir acerca de este error de visibilidad? – VSP

1

Debido a que usted ha ajustado el controlador click lbl_Click modificador como private, usted tiene que configurarlo como Protected O Public. Como el archivo aspx heredó la clase cs, no se puede acceder a un miembro privado.

Este

private void lbl_Click(object sender, EventArgs e) 

debería ser como ..

protected void lbl_Click(object sender, EventArgs e)