【问题标题】:ASP.NET C# partial class in separate files not working CS1061单独文件中的 ASP.NET C# 部分类不起作用 CS1061
【发布时间】:2012-12-21 02:11:45
【问题描述】:

我有一个名为 prequal.aspx 的 asp.net 页面,其代码隐藏为 prequal.aspx.cs。有用。我想将此页面中的每个客户端代码分离到它们自己的部分文件中(以减少以后错误修改错误的机会。)两个 .cs 文件都是这样开始的:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

    public partial class prequal : System.Web.UI.Page
    {

当我将其中一个客户端代码放入其自己的文件时,它可以正常编译,但当我尝试查看页面时出现以下错误:

CS1061:“ASP.prequal_aspx”不包含“lnkLanguage_Click”的定义,并且找不到接受“ASP.prequal_aspx”类型的第一个参数的扩展方法“lnkLanguage_Click”(您是否缺少 using 指令或程序集参考?)

prequal.aspx 有这个:

<asp:LinkButton id="lnkLanguage" onclick="lnkLanguage_Click" runat="server" CausesValidation="False">English / En Español</asp:LinkButton>

prequal.aspx.cs 有这个:

    protected void lnkLanguage_Click()
    {
        // alternate preferred language
        if (Session["lang"].ToString() == "spa")
        {
            Session["lang"] = "eng";
        }
        else
        {
            Session["lang"] = "spa";
        }
        populateQuestions();
    }

populateQuestions() 将调用 prequal.aspx.cs 中的其他代码,这些代码调用 prequal-client1.aspx.cs 中的代码。代码在我拆分之前有效,所以我是否要错误地创建单独的部分类文件?还是我还不知道的其他问题?

【问题讨论】:

    标签: asp.net partial


    【解决方案1】:

    我认为lnkLanguage 的签名必须是:

    protected void lnkLanguage_Click(object sender, EventArgs e)
    {
      //...
    }
    

    【讨论】:

    • 一开始是这样的,但由于没有直接传递给它的参数,所以我删除了它。放回去仍然会产生相同的结果。
    • 您是否提前预编译了本站?我在想也许 ASP.NET 只是查看 page 指令上的 CodeBehind 属性,然后编译那个 .cs 文件。您可能最好将文件后面的所有 .CS 代码编译到 bin 目录中的 DLL 中。
    • @HankKnah 什么都不会传递给它? .NET Framework 指南要求您处理 Mike 发布的方法签名。由于按钮是本机 .NET 控件,因此它们将遵循此签名。见:msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx
    • @FrazellThomas - 正确,因为委托在 .NET 中是类型安全的,它们只会与正确的签名绑定。但是,在这种情况下,我认为某些东西卡在临时 Internet 文件中,或者是某种页面指令问题,其中并非所有正确的 .cs 文件都在编译。
    • 我已将“object sender, EventArgs e”读入所有例程。清理解决方案,构建解决方案,在新的浏览器选项卡中查看 prequal.aspx ......结果相同。此项目文件夹(或任何其他项目文件夹)中没有 bin 目录。其他想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2016-08-03
    • 2014-01-30
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多