CS0103: имя не существует в текущем контексте, для всех элементов управления на странице? - PullRequest
0 голосов
/ 21 октября 2018

Я импортировал пользовательский элемент управления в ASP.NET (C #), имя элемента управления - HijriGregDatePicker.ascx, у которого есть всплывающий календарь как в исламском, так и в григорианском календарях.Моя проблема при компиляции HijriGregDatePicker.ascx.cs Я получаю много ошибок типа

Ошибка CS0103 Имя 'ctlCalendarLocalized' не существует в текущем сертификате контекста \ certificate \ HijriGregDatePicker.ascx.cs

В то время как внутри файла ASCX календарь существует следующим образом: он находится внутри 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>

Одним из решений, которое я нашел в Интернете, был импорт всех ссылок в Интернете, как показано ниже

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"  %>

Я попытался удалить тег наследования,но все тот же.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Поскольку это ascx-файл, вы не обязательно должны использовать код позади.Создайте скрипт прямо на странице ascx

<script runat="server">

</script>

Когда вы добавите runat = "server", скрипт не появится в исходном коде браузера.Чтобы избежать ошибок, используйте intellisence для создания нового элемента управления для OnSelectionChange=""

0 голосов
/ 22 октября 2018

Назначение свойства 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...