私は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で正常に機能したので、なぜそれが不平を言うのか分かりません。私は数え切れないほどの時間を費やしてトラブルシューティングを行ってきたので、なぜこれが解決できないのか、いくつかの推測でここに捨てていきたいと思っています。
これは十分な情報かどうかわかりませんが、そうでない場合は教えてください。あなたが投稿コードがないページため、ユーザーコントロールに適しているので
問題はユーザーコントロールの階層ではないようですが、問題はページのユーザーコントロールを使用した場所です(問題はページにあります)。 –
そうですが、これはVB.NETでも同じようにうまくいきました。 – PositiveGuy
ユーザーコントロールコードの代わりにページコードの一部を投稿できる場合は、問題の把握に役立ちます。 –