2011-08-14 6 views
2

私はVB.NETプロジェクトをC#に変換しました。しかし、今すぐ継承の名前空間が正しいにもかかわらず、私の.aspxページはすべて「[コントロール名]はSystem.Web.UI.Pageに変換可能でなければなりません」と続きます。"control name"はSystem.Web.UI.Pageに変換可能である必要があります

この例では、

namespace Forum.UI 
{ 
    /// <summary> 
    /// Code behind for Skins/SkinName/Activate.ascx. 
    /// </summary> 
    /// <remarks></remarks> 
    public class Activate : SkinControl 
    { 
     #region Private Variables 

     private string Key; 
     private Int32 UserID; 

     #endregion 

     #region Constructor 

     public Activate() 
     { 
      base.SkinFileName = "Activate.ascx"; 
     } 

     #endregion 

     #region Initialize 

     protected override void Initialize(Control ctlSkin) 
     { 
      // track whos on information 
      base.TrackSession(EnumTask.ActivatingAccount); 

      // get querystring values 
      Key = base.CurrentContext.CurrentRequest.Key; 
      UserID = base.CurrentContext.CurrentRequest.UserID; 

      if (System.Web.HttpContext.Current.Request.IsAuthenticated) 
      { 
       if (UserID != base.CurrentContext.CurrentUser.UserID) 
       { 
        // logout currently logged in user 
        Authentication.Logout(); 
        // redirect to this page to refresh controls 
        Common.Globals.Paths.Redirect(Paths.Activate(UserID, Key), false, false); 
       } 
      } 


      bool ActivationSuccess = User.ActivateAccount(UserID, Key, 
                  base.CurrentContext.CurrentSettings.SharedSettings. 
                   DefaultUserRoleID); 


      if (ActivationSuccess) 
      { 

       Business.User.UpdatePermissionSet(UserID, 0); 


       UserRoles.DeleteUserRole(UserID, 
             base.CurrentContext.CurrentSettings.SharedSettings. 
              DefaultAwaitingApprovalRoleID); 

       UserRoles.AddUserRole(UserID, base.CurrentContext.CurrentSettings.SharedSettings.DefaultUserRoleID); 


       Sessions.Add(EnumSessionObjects.ConfirmationHeader.ToString(), "Confirmation_HeaderActivationComplete"); 
       Sessions.Add(EnumSessionObjects.ConfirmationMesssage.ToString(), "Confirmation_TextActivationComplete"); 
      } 
      else 
      { 

       Sessions.Add(EnumSessionObjects.ConfirmationHeader.ToString(), "Confirmation_HeaderActivationError"); 
       Sessions.Add(EnumSessionObjects.ConfirmationMesssage.ToString(), "Confirmation_TextActivationError"); 
      } 

      Business.User.ClearCache(base.CurrentContext.CurrentUser); 


      Common.Globals.Paths.Redirect(Paths.ConfirmationMessage(Sessions.SessionID()), false, false); 
     } 

     #endregion 
    } 
} 

SkinControl.csがBaseSkinControl.csをinherts、その後BaseSkinControl.csが継承:私はここに

<%@ Page Language="C#" Inherits="Forum.UI.Activate" Codebehind="Activate.aspx.cs" %> 


<asp:Content ID="ctlContent" ContentPlaceHolderID="ctlContentPlaceHolder" runat="Server"> 
</asp:Content> 

だアクティブコントロール "アクティブがSystem.Web.UI.Pageに変換可能でなければなりません" を取得しますカスタムUserControl.csクラス、最後にUserControl.csはSystemを継承します。 Web.UI.UserControl。

この同じコードはVB.NETで正常に機能したので、なぜそれが不平を言うのか分かりません。私は数え切れないほどの時間を費やしてトラブルシューティングを行ってきたので、なぜこれが解決できないのか、いくつかの推測でここに捨てていきたいと思っています。

これは十分な情報かどうかわかりませんが、そうでない場合は教えてください。あなたが投稿コードがないページため、ユーザーコントロールに適しているので

+1

問題はユーザーコントロールの階層ではないようですが、問題はページのユーザーコントロールを使用した場所です(問題はページにあります)。 –

+0

そうですが、これはVB.NETでも同じようにうまくいきました。 – PositiveGuy

+1

ユーザーコントロールコードの代わりにページコードの一部を投稿できる場合は、問題の把握に役立ちます。 –

答えて

1

エラーメッセージが正しいです。彼らは同じことではありません。スキン/ SkinName/Activate.ascxための背後

///コード:あなたもそれがASCXファイルの分離コードではなく、ASPXページであることを意味したことを、このアクティブクラスのコメントで見ることができます。

これはUserControl用であることを伝えた継承階層からも明らかです。

VBコードを確認して、実際にASPXページであることを確認してください。

関連する問題