2011-07-17 30 views
5

dodałem LinkButton do mojej strony i dostać błąd podczas debugowania mówi:CS1061: Komunikat o błędzie Kompilacja

CS1061: „ASP.uilayer_test_aspx” nie zawierają definicji dla „lbl_Click” i żadna metoda rozszerzenie " lbl_Click”przyjęcie pierwszego argumentu typu 'ASP.uilayer_test_aspx' można odnaleźć (czy brakuje using dyrektywa lub odwołania do zestawu?)

.aspx zawiera:

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

strona diretive:

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

.cs zawiera:

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

Odpowiedz

9

Trzeba dokonać lbl_Click chronione i nie prywatne.

Powodem tego jest utworzenie własnej klasy o nazwie podobnej do ASP.uilayer_test_aspx ze źródła aspx. Ta klasa dziedziczy z twojej klasy Test. Prywatne metody nie są widoczne dla klas potomnych, więc muszą być chronione.

+0

Ten był zbawicielem^^. Zdarza się to również, jeśli masz "wewnętrzny" ... to powinno być uważane za błąd, kompilując dobrze, ale podnosząc błąd w opublikowanej wersji .... czy nie powinien ostrzegać kompilator o tym błędzie widoczności? – VSP

1

Ponieważ ustawiłeś kliknij uchwytu lbl_Click modyfikator jak private, musisz ustawić go jako Protected LUB Public. Ponieważ plik aspx odziedziczył klasę cs i nie można uzyskać dostępu do prywatnego elementu.

Ten

private void lbl_Click(object sender, EventArgs e) 

powinno być jak ..

protected void lbl_Click(object sender, EventArgs e) 
Powiązane problemy