我刚刚将一个VB.NET项目转换为C#。但是现在即使这个继承的命名空间是正确的,我所有的.aspx页面仍然说“[控件名]必须可以转换为System.Web.UI.Page”
所以在这个例子中,当我将鼠标悬停在Activate上时,我得到“Activate必须可以转换为System.Web.UI.Page”
<%@ Page Language="C#" Inherits="Forum.UI.Activate" Codebehind="Activate.aspx.cs" %>
<asp:Content ID="ctlContent" ContentPlaceHolderID="ctlContentPlaceHolder" runat="Server">
</asp:Content>
这是激活控制:
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 inherts一个BaseSkinControl.cs然后BaseSkinControl.cs继承一个自定义UserControl.cs类,最后UserControl.cs继承System.Web.UI.UserControl。
这个相同的代码在VB.NET中运行得很好,所以我不确定它为什么抱怨。我花了无数个小时试图进行故障排除所以我把它扔到这里是为了希望能够解决为什么无法解决这个问题。
我不知道这是否足够,但如果没有,请告诉我。
答案 0 :(得分:0)
错误消息是正确的,因为您发布的代码适用于 UserControl ,而不适用于 Page 。他们不是一回事。您甚至可以在此Activate类的注释中看到它是ASCX文件的代码隐藏,而不是ASPX页面:
/// Skins / SkinName / Activate.ascx的代码隐藏。
从发布的继承层次结构中也可以清楚地看到,这是用于UserControl。
检查您的VB代码并确保它实际上是一个ASPX页面。