gpt4 book ai didi

asp.net - "control name"必须可转换为 System.Web.UI.Page

转载 作者:行者123 更新时间:2023-12-02 14:10:10 34 4
gpt4 key购买 nike

我刚刚将 VB.NET 项目转换为 C#。但现在即使继承的命名空间是正确的,我所有的 .aspx 页面仍然说“[控件名称]必须可转换为 System.Web.UI.Page”

因此,在此示例中,当我将鼠标悬停在“激活”上时,我得到“激活必须可转换为 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 继承 BaseSkinControl.cs,然后 BaseSkinControl.cs 继承自定义 UserControl.cs 类,最后 UserControl.cs 继承 System.Web.UI.UserControl。

同样的代码在 VB.NET 中运行得很好,所以我不确定它为什么会提示。我花了无数个小时尝试排除故障,所以我把它放在这里,希望能够猜测为什么这个问题无法解决。

我不知道这些信息是否足够,但如果不够,请告诉我。

最佳答案

错误消息是正确的,因为您发布的代码适用于UserControl,而不适用于Page。它们不是同一件事。您甚至可以在该 Activate 类的注释中看到,它是 ASCX 文件的代码隐藏,而不是 ASPX 页面:

/// Code behind for Skins/SkinName/Activate.ascx.

从您发布的继承层次结构中也可以清楚地看出这是针对 UserControl 的。

检查您的 VB 代码并确保它确实是一个 ASPX 页面。

关于asp.net - "control name"必须可转换为 System.Web.UI.Page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055464/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com