c# – 在Visual Web Developer 2010 Express中运行“正常工作”Web应用程序时出错

我正在获得在Visual Studio 2008上开发的旧.NET Web应用程序的支持.但是我使用的是Visual Web Developer 2010 Express.我已经将项目代码直接从最后一个工作版本加载为Web应用程序. Everything编译并加载设置以定位.NET Framework 3.5版.

但是,在调试时,请求的第一个页面会在消息中出现“编译错误”

“*CS1061: ‘ASP.site_master’ does not contain a definition for ‘LinkButton2_Click’ and no extension method ‘LinkButton2_Click’ accepting a first argument of type ‘ASP.site_master’ could be found (are you missing a using directive or an assembly reference?)*”.

以下是相关的代码详细信息:

来自Site.Master:

  <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Master.cs"  %>
   ...
   <asp:LoginView ID="LoginView1" runat="server" >
   <AnonymousTemplate>
      <asp:LinkButton ID="LinkButton2" runat="server" Click="LinkButton2_Click"> Login
      </asp:LinkButton>
   </AnonymousTemplate>

来自Site.Master.cs:

 public partial class Site : BaseMasterPage  // BaseMasterPage is subclass of System.Web.UI.MasterPage
 ...
 public void LinkButton2_Click(object sender, EventArgs e)
    {
        Response.Redirect("/Login.aspx?ReturnURL="+ Request.Url.AbsolutePath);
    }

显然,代码已定义,并且没有明显的拼写错误.

我主要是一名Java开发人员,但对.NET有着丰富的经验.然而,这个问题让我感到难过,所以我需要一些帮助来浏览它.我已经通过谷歌进行了广泛的研究,这种类型的问题已被多次报道,包括Stack Overflow.但是,之前报告中给出的所有决议都没有帮助我解决这个问题.这是非常令人费解的,因为代码显然可以正常运行,因为它目前正在生产中运行.它似乎是Visual Studio 2008和Visual Web Developer 2010 Express之间的版本问题.

最佳答案 在您的主声明中添加一个Inherits =“Site”属性.这可以允许它与代码隐藏文件正确连接.

Site.Master.aspx:

<%@ Master Language="C#" Inherits="<full namespace>.Site" CodeBehind="Site.Master.cs" AutoEventWireup="true" %>

必须在Site.Master.cs中的位置

点赞