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>

エラーは 1 行目にあり、次のとおりです。

コンパイラ エラー メッセージ: ASPNET: このコード ファイルで定義されているクラスが 'inherits' 属性と一致し、正しい基本クラス (Page または UserControl など) を拡張していることを確認してください。

私がそれを変更した場合

public class CasLogin : System.Web.UI.Page

public class CasLogin : Page

次のエラーが表示されます。

コンパイラ エラー メッセージ: CS0246: 型または名前空間名 'Page' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

4

4 に答える 4

4

public class CasLogin : System.Web.UI.Pageからに 変更すると、public 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

クラス名を完全に修飾しないと、話しているページがわからないため、クラスを宣言するときに明示的にするか、using ステートメントを使用できます。最初のエラーは同じ問題で、chees.pies.org 名前空間内に CasLogin クラスが表示されません。

于 2012-05-01T19:26:49.403 に答える
1

継承する必要があります:

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

私自身の小さなテストプロジェクト/コードを見ると、いくつかの顕著な違いがあります。「使用法」は名前空間宣言の前にあり、コードの後ろに部分クラスを使用しています。また、継承には完全修飾クラス(名前空間を含む)があることに注意してください。

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 に答える