2

同样,我对这种事情还很陌生,也许错误消息告诉我它是什么,我只是不明白,但是...... anon.cs 中的这段代码

namespace cheese.pies.org
{
    using System;
    using System.IO;
    using System.Net;
    using System.Web;
    using System.Xml;

    public class CasLogin : System.Web.UI.Page
    {
        private const string CasHost = "notimportant";

        public static string GetId()
        {
        }
}

在这里引用时最终给我一个错误:

<% @Page Language="C#" Inherits="CasLogin" CodeFile="CasLogin.cs" %>
<script language="C#" runat="server">
protected void Page_Load(object sender, EventArgs e) {
    String directoryId = CasLogin.GetId();
    FormsAuthentication.RedirectFromLoginPage(directoryId, false);
}
</script>

错误在第一行,是:

编译器错误消息:ASPNET:确保此代码文件中定义的类与“继承”属性匹配,并且它扩展了正确的基类(例如 Page 或 UserControl)。

如果我改变它

public class CasLogin : System.Web.UI.Page

public class CasLogin : Page

我收到此错误:

编译器错误消息:CS0246:找不到类型或命名空间名称“页面”(您是否缺少 using 指令或程序集引用?)

4

4 回答 4

4

如果我将它从 更改public class CasLogin : System.Web.UI.Pagepublic class CasLogin : Page我收到此错误

您缺少类 ( ) 的正确using语句,因此当您删除完整限定时,编译器将无法再找到该类。PageSystem.Web.UIPage

您还应该完全限定 Page 指令中的类名,即Inherits="cheese.pies.org.CasLogin"

好的

<% @Page Language="C#" Inherits="cheese.pies.org.CasLogin" CodeFile="CasLogin.cs" %>

坏的

<% @Page Language="C#" Inherits="CasLogin" CodeFile="CasLogin.cs" %>

根据您对缺少partial修饰符的评论:

public class CasLogin : System.Web.UI.Page

应该:

public partial class CasLogin : System.Web.UI.Page

这告诉编译器CasLogin该类是在多个文件中定义的(Web 表单就是这种情况;设计器文件与代码隐藏文件是分开的)。

如果它仍然不起作用,我建议重新创建页面并将任何相关代码复制到其中。通常 Visual Studio 会自动处理所有这些,这不是问题。

于 2012-05-01T19:23:08.590 回答
1

我很确定应该是

<% @Page Language="C#" Inherits="cheese.pies.org.CasLogin" CodeFile="CasLogin.cs" %>

对于其他错误,您可以使用

using System.Web.UI;

public class CasLogin : Page

如果没有完全限定类名,它不知道您在谈论哪个 Page,因此您可以在声明类时明确说明,也可以使用 using 语句。第一个错误是同样的问题,它看不到 chees.pies.org 命名空间内的 CasLogin 类

于 2012-05-01T19:26:49.403 回答
1

继承需要:

Inherits="cheese.pies.org.CasLogin"
于 2012-05-01T19:27:00.817 回答
0

查看我自己的小测试项目/代码,我看到一些明显不同的东西:“usings”出现在命名空间声明之前,以及后面代码的部分类的使用。另外,请注意 Inherits 具有完全限定的类(包括命名空间)。

在 Default.aspx 中

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>

在 Default.aspx.cs

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
using System.Data;

namespace WebApplication2
{
    public partial class _Default : System.Web.UI.Page
    {
于 2012-05-01T19:42:23.960 回答