首页 > 解决方案 > CS0103:名称在当前上下文中不存在,对于页面中的所有控件?

问题描述

我已经将一个自定义控件导入到 ASP.NET (C#),控件名称是HijriGregDatePicker.ascx在伊斯兰日历和公历上都有一个弹出日历。编译时的问题HijriGregDatePicker.ascx.cs我收到许多类型的错误

错误 CS0103 当前上下文证书 \certificate\HijriGregDatePicker.ascx.cs 中不存在名称“ctlCalendarLocalized”

在 ASCX 文件中,日历存在如下:它在 PANEL 中的 DIV 中

<asp:Calendar ID="ctlCalendarLocalized" runat="server" BackColor="White" 
                BorderColor="White" 
                Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" Height="125px"  
                Width="275px" BorderWidth="1px" NextPrevFormat="FullMonth" 
                ShowDayHeader="True" ShowNextPrevMonth="False"
                OnSelectionChanged="ctlCalendarLocalized_SelectionChanged">
                <DayHeaderStyle Font-Bold="True" Font-Size="7pt"  Font-Names="Tahoma" />
                <NextPrevStyle VerticalAlign="Bottom" Font-Bold="True" Font-Size="8pt" 
                    ForeColor="#333333" />
                <OtherMonthDayStyle ForeColor="#999999" />
                <SelectedDayStyle BackColor="#333399" ForeColor="White" />
                <TitleStyle BackColor="White" BorderColor="Black" Font-Bold="True" 
                    BorderWidth="1px" Font-Size="9pt" ForeColor="#333399" BorderStyle="Ridge" Font-Names="sans-serif" />
                <TodayDayStyle BackColor="#CCCCCC" />
</asp:Calendar>

我在网上找到的解决方案之一是导入所有 Web 引用,如下所示

using System;
using System.Drawing;
using System.Web.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

但这并没有帮助,另一个解决方案是继承HijriGregDatePicker.ascx

就像这样:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HijriGregDatePicker.ascx.cs" 
Inherits="HijriGregDatePicker.ascx"  %>

我尝试删除继承标签,但仍然相同。

标签: c#asp.netwebformscustom-controlsascx

解决方案


属性分配完全错误并导致不存在的Inherits="HijriGregDatePicker.ascx"控件名称错误(您不能使用 ASCX 文件扩展名作为另一个用户控件的继承基础)。使用与代码隐藏文件命名空间具有相同名称的正确类名,如下例所示:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HijriGregDatePicker.ascx.cs" 
Inherits="YourNamespace.HijriGregDatePicker" %>

另外值得注意的是,UserControl类继承不包括前端视觉元素asp:Calendar,您需要使用Register指令在另一个用户控件中使用/显示该基本日历控件(请参阅此问题):

<%@ Register TagPrefix="dtp" TagName="HijriGregDatePicker" Src="HijriGregDatePicker.ascx" %>

<dtp:HijriGregDatePicker ID="datepicker" runat="server" ...>
</dtp:HijriGregDatePicker>

相关问题:如何从另一个 UserControl 继承 UserControl?


推荐阅读