Подтвердить что ты не робот

Элементы управления Asp.net недоступны в коде

У меня есть проект, который был ранее построен кем-то еще. Когда я пытаюсь добавить новый элемент управления на страницу, я не могу получить к нему доступ в коде позади. Когда я пытаюсь получить к нему доступ, появляется сообщение об ошибке, что элемент управления не определен в текущем контексте.

<%@ Page Language="C#" MasterPageFile="~/HRMS.Master" AutoEventWireup="true"     CodeBehind="manageEmployee.aspx.cs" Inherits="HRMS.manageEmployee" Title="Untitled Page" %>

<%@ Register Assembly="eWorld.UI" Namespace="eWorld.UI" TagPrefix="ew" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>


<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <script type="text/javascript">
    document.getElementById("employee").setAttribute("class", "selected");
    </script>
<!--OPEN CONTENT DIV-->

     <asp:ScriptManager ID="ScriptManager1" runat="server">
     </asp:ScriptManager>
    <!-- Only this area is updated on PostBack -->

<div class="manage_employ">

    <ul>
        <li style="margin-top:10px; margin-bottom:15px"><input type="image" src="images/img_manageEmployee01.png"/></li>
    </ul>

    <ul>
        <li>First name</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtFirstName"/></li>
        <asp:RequiredFieldValidator ID="validatorFirstName" runat="server" ErrorMessage="*" ControlToValidate="txtFirstName"></asp:RequiredFieldValidator>
        <li>Last name</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtLastName"/></li>
        <asp:RequiredFieldValidator ID="validatorLastname" runat="server" ErrorMessage="*" ControlToValidate="txtLastName"></asp:RequiredFieldValidator>
    </ul>

    <ul>
        <li>CNIC</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtCNIC"/></li>
        <asp:RequiredFieldValidator ID="validatorCNIC" runat="server" ErrorMessage="*" ControlToValidate="txtCNIC"></asp:RequiredFieldValidator>
        <li>Blood Group</li>
        <li><asp:DropDownList runat="server" class="text_input" id="ddlBloodGroup">
        <asp:ListItem>A+</asp:ListItem>
        <asp:ListItem>B+</asp:ListItem>
        <asp:ListItem>AB+</asp:ListItem>
        <asp:ListItem>A-</asp:ListItem>
        <asp:ListItem>B-</asp:ListItem>
        <asp:ListItem>AB-</asp:ListItem>
        <asp:ListItem>O+</asp:ListItem>
        <asp:ListItem>O-</asp:ListItem>
        </asp:DropDownList>
        </li>
    </ul>

    <ul>
        <li>Mobile</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtMobile"/></li>
        <asp:RequiredFieldValidator ID="validatorMobile" runat="server" ErrorMessage="*" ControlToValidate="txtMobile"></asp:RequiredFieldValidator>
        <li>Phone</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtPhone"/></li>
    </ul>

    <ul>


    </ul>

    <ul>
        <li>E-Mail</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtEmail"/></li>
        <asp:RegularExpressionValidator ID="valEmail" ControlToValidate="txtEmail" runat="server" ErrorMessage="*" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
            <li>Maritial Status</li>
            <li>
            <asp:RadioButton ID="rbtnMarried" AutoPostBack="true" runat="server" oncheckedchanged="rbtnMarried_CheckedChanged"/>Married
            <asp:RadioButton ID="rbtnUnmarried" AutoPostBack="true" runat="server" 
                    oncheckedchanged="rbtnUnmarried_CheckedChanged"/>Unmarried
            </li>
            </ContentTemplate>
        </asp:UpdatePanel>
    </ul>

    <ul>
        <li>Permanant Address</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtPermanantAddress"/></li>
        <asp:RequiredFieldValidator ID="validatorPAddress" runat="server" ErrorMessage="*" ControlToValidate="txtPermanantAddress"></asp:RequiredFieldValidator>
        <li>Temporary Address</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtTemporaryAddress"/></li>
        <asp:RequiredFieldValidator ID="validatorTAddress" runat="server" ErrorMessage="*" ControlToValidate="txtTemporaryAddress"></asp:RequiredFieldValidator>
    </ul>


    <ul>
        <li>Salary</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtSalary"/></li>
        <asp:RequiredFieldValidator ID="validatorSalary" runat="server" ErrorMessage="*" ControlToValidate="txtSalary"></asp:RequiredFieldValidator>
        <li>Joining Date</li>

             <li>
        <%--<ew:calendarpopup ID="calJoiningDate" runat="server"></ew:calendarpopup>--%>
                  <asp:TextBox ID="CalJoiningDate1" runat="server" CssClass="text_input"></asp:TextBox>
                  <cc1:CalendarExtender ID="CalJoiningDate1_CalendarExtender" runat="server" 
                       Enabled="True" TargetControlID="CalJoiningDate1">
                  </cc1:CalendarExtender>
        </li>


    </ul>
    <ul>
        <li>Job Area</li>
        <li><asp:DropDownList runat="server" class="text_input" id="ddlJobArea"/></li>
        <li>Desigantion</li>
        <li><asp:DropDownList runat="server" class="text_input" id="ddlDesignation"/></li>
    </ul>

    <asp:UpdatePanel ID="updatePnl" runat="server">
    <ContentTemplate>    
    <div>
    <ul>
        <li style="margin-top:20px; margin-bottom:15px"><input type="image" src="images/img_jobHistory.png"  /></li>
    </ul>

    <ul>
    <li>Company</li>
   <%--<asp:DropDownList runat="server" class="text_input" id="ddlCompany" 
              onselectedindexchanged="ddlCompany_SelectedIndexChanged"/>--%>
          <li><asp:TextBox ID="CompanyNames" runat="server" CssClass="text_input"></asp:TextBox> 
               <cc1:AutoCompleteExtender ID="CompanyNames_AutoCompleteExtender" runat="server" 
                    DelimiterCharacters="" Enabled="True" ServicePath="getCompanies.asmx" ServiceMethod="getCompaniesMethod" MinimumPrefixLength="1" 
                    TargetControlID="CompanyNames" UseContextKey="True">
               </cc1:AutoCompleteExtender>
               <li>Job Duration</li>
               <li>
                    <asp:TextBox ID="txtJobDuration" runat="server" class="text_input" />
               </li>
               <asp:RequiredFieldValidator ID="validatorJobDuration" runat="server" 
                    ControlToValidate="txtJobDuration" ErrorMessage="*" 
                    ValidationGroup="jobHistory"></asp:RequiredFieldValidator>
         </li>
    </ul>

    <ul>
    <li>Job Area</li>
    <li><asp:DropDownList runat="server" class="text_input" id="ddlJobHistJobArea"/></li>
    <li>Designation</li>
    <li><asp:DropDownList runat="server" class="text_input" id="ddlJobHistoryDesignation"/></li>
    </ul>

    <ul>
    <li>Last Drawn Salary</li>
    <li><asp:TextBox runat="server" class="text_input" id="txtLastDrawnSalary"/>
         </li>
        <asp:RequiredFieldValidator ID="validatorLastDrawnSalary" runat="server" ValidationGroup="jobHistory" ErrorMessage="*" ControlToValidate="txtLastDrawnSalary"></asp:RequiredFieldValidator>
    </ul>

    <ul>
        <li style="margin-left:160px">
            <asp:ImageButton src="images/btn_Add.png" runat="server" ID="btnAddJobHistory" onclick="btnAddJobHistory_Click" CausesValidation="True" ValidationGroup="jobHistory"/>
            <asp:ImageButton src="images/btnReset.png" runat="server" ID="btnResetJH" CausesValidation="False" onclick="btnResetJH_Click"/>
        </li>
    </ul>

    <ul style="margin-left:30px">
    <asp:GridView ID="grdJobHistory" runat="server" AutoGenerateColumns="False" Width="798px" 
            AllowPaging="True" 
        onpageindexchanging="grdJobHistory_PageIndexChanging" 
        onrowcommand="grdJobHistory_RowCommand" 
            onrowdeleting="grdJobHistory_RowDeleting" 
            onrowediting="grdJobHistory_RowEditing" Font-Bold="True" 
            Font-Names="Calibri" Font-Size="Medium" ForeColor="White" PageSize="5">
            <Columns>
                <asp:BoundField DataField="EmployeeExperianceId" 
                    HeaderText="EmployeeExperianceId" />
                <asp:BoundField HeaderText="Company" DataField="CompanyName" ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField DataField="JobAreaName" HeaderText="Job Area" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Smaller" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Designation" DataField="DesignationName" 
                    ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Experiance Duration" DataField="ExperianceDuration" 
                    ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Salary" DataField="LastDrawnSalary" ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:TemplateField AccessibleHeaderText="Edit" HeaderText="Edit">
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnEdit" runat="server" ImageUrl="images/updateIcon.png" CausesValidation="False" CommandName="Edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "EmployeeExperianceId") %>'/>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField AccessibleHeaderText="Delete" HeaderText="Delete">
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnDelete" runat="server" ImageUrl="images/deleteIcon.png" CausesValidation="False" CommandName="Delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "EmployeeExperianceId") %>' OnClientClick="return confirm('Are you sure you want to delete this record...');"/>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <HeaderStyle BackColor="#5D92B9" BorderStyle="None" />
            <AlternatingRowStyle BackColor="#AAAAAA" />
        </asp:GridView>
    </ul>

    </div>

    <div>
    <ul>
        <li style="margin-top:20px; margin-bottom:15px"><input type="image" src="images/img_skillDetail.png"  /></li>
    </ul>

    <ul>
        <li>Skill</li>
        <!--<li><asp:DropDownList runat="server" class="text_input" id="ddlSkill"/></li>-->
        <li>
             <asp:TextBox ID="SkillAutoComplete" runat="server" CssClass="text_input"></asp:TextBox>
             <cc1:AutoCompleteExtender ID="SkillAutoComplete_AutoCompleteExtender" 
                  runat="server" DelimiterCharacters="" Enabled="True" ServicePath="getSkills.asmx" ServiceMethod="getAllSkills" MinimumPrefixLength="1" 
                  TargetControlID="SkillAutoComplete">
             </cc1:AutoCompleteExtender>
         </li>
        <li>Skill Detail</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtSkillDetail"/></li>
        <asp:RequiredFieldValidator ID="validatorSkillDetail" runat="server" ValidationGroup="skill" ErrorMessage="*" ControlToValidate="txtSkillDetail"></asp:RequiredFieldValidator>
    </ul>    

    <ul>
        <li style="margin-left:160px">
            <asp:ImageButton src="images/btn_Add.png" runat="server" ID="btnAddSkill" CausesValidation="True" ValidationGroup="skill" onclick="btnAddSkill_Click"/>
            <asp:ImageButton src="images/btnReset.png" runat="server" ID="btnResetSkill" CausesValidation="False" onclick="btnResetSkill_Click"/>
        </li>
    </ul>    

    <ul style="margin-left:30px">
    <asp:GridView ID="grdSkill" runat="server" AutoGenerateColumns="False" Width="798px" 
            AllowPaging="True" 
        onpageindexchanging="grdSkill_PageIndexChanging" 
        onrowcommand="grdSkill_RowCommand" 
            onrowdeleting="grdSkill_RowDeleting" 
            onrowediting="grdSkill_RowEditing" Font-Bold="True" 
            Font-Names="Calibri" Font-Size="Medium" ForeColor="White" PageSize="5">
            <Columns>
                <asp:BoundField HeaderText="EmployeeSkillId" DataField="EmployeeSkillId" >
                </asp:BoundField>
                <asp:BoundField DataField="SkillName" HeaderText="Skill Name" ReadOnly="True">
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Skill Detail" DataField="SkillDetail" 
                    ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnEdit" runat="server" ImageUrl="images/updateIcon.png" CausesValidation="false" CommandName="Edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "EmployeeSkillId") %>'/>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnDelete" runat="server" ImageUrl="images/deleteIcon.png" CommandName="Delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "EmployeeSkillId") %>' OnClientClick="return confirm('Are you sure you want to delete this record...');"/>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <HeaderStyle BackColor="#5D92B9" BorderStyle="None" />
            <AlternatingRowStyle BackColor="#AAAAAA" />
        </asp:GridView>
    </ul>
    </div>

    <div>       
    <ul>
        <li style="margin-top:20px; margin-left:20px; margin-bottom:15px"><input type="image" src="images/img_qualificationDetail.png"  /></li>
    </ul>    

    <ul>
        <li>Course</li>
        <li><asp:DropDownList runat="server" class="text_input" id="ddlCourse"/></li>
        <li>Institution</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtInstitution"/></li>
        <asp:RequiredFieldValidator ID="validatorInsitution" runat="server" ValidationGroup="course" ErrorMessage="*" ControlToValidate="txtInstitution"></asp:RequiredFieldValidator>
    </ul>        

    <ul>
        <li>Duration</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtCourseDuration"/></li>
        <asp:RequiredFieldValidator ID="validatorDuration" runat="server" ValidationGroup="course" ErrorMessage="*" ControlToValidate="txtCourseDuration"></asp:RequiredFieldValidator>
        <li>Passing Year</li>
        <li>
             <asp:TextBox ID="calPassingYear1" runat="server" CssClass="text_input"></asp:TextBox>

        </li>
        <!--<li><ew:CalendarPopup ID="calPassingYear" runat="server"></ew:CalendarPopup></li>-->
    </ul>        

    <ul>
        <li>Marks/Percentage/GPA</li>
        <li><asp:TextBox runat="server" class="text_input" id="txtMarksPercentage"/></li>
        <asp:RequiredFieldValidator ID="validatorMarks" runat="server" ValidationGroup="course" ErrorMessage="*" ControlToValidate="txtMarksPercentage"></asp:RequiredFieldValidator>
        <li style="margin-left:160px">
        <asp:ImageButton src="images/btn_Add.png" runat="server" ID="btnAddCourse" CausesValidation="True" onclick="btnAddCourse_Click" ValidationGroup="course"/>
        <asp:ImageButton src="images/btnReset.png" runat="server" ID="btnResetCourse" CausesValidation="False" onclick="btnResetCourse_Click" />
        </li>
    </ul>        

    <ul style="margin-left:30px">
    <asp:GridView ID="grdCourse" runat="server" AutoGenerateColumns="False" Width="798px" 
            AllowPaging="True" 
        onpageindexchanging="grdCourse_PageIndexChanging" 
        onrowcommand="grdCourse_RowCommand" 
            onrowdeleting="grdCourse_RowDeleting" 
            onrowediting="grdCourse_RowEditing" Font-Bold="True" 
            Font-Names="Calibri" Font-Size="Medium" ForeColor="White" PageSize="5">
            <Columns>
                <asp:BoundField DataField="EmployeeQualificationId" 
                    HeaderText="EmployeeQualificationId" />
                <asp:BoundField HeaderText="Course" DataField="CourseTitle" ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Institution" DataField="InstitutionName" 
                    ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Duration" DataField="Duration" 
                    ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Passing Year" DataField="YearOfPassing" 
                    ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Marks/Percentage/GPA" DataField="MarksPercentage" 
                    ReadOnly="True" >
                    <ItemStyle Font-Names="Calibri,Verdana,Arial,Helvetica,sans-serif" 
                        Font-Size="Small" ForeColor="#3F4A53" />
                </asp:BoundField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnEdit" runat="server" ImageUrl="images/updateIcon.png" CausesValidation="false" CommandName="Edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "EmployeeQualificationId") %>'/>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnDelete" runat="server" ImageUrl="images/deleteIcon.png" CommandName="Delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "EmployeeQualificationId") %>' OnClientClick="return confirm('Are you sure you want to delete this record...');"/>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <HeaderStyle BackColor="#5D92B9" BorderStyle="None" />
            <AlternatingRowStyle BackColor="#AAAAAA" />
        </asp:GridView>
    </ul>
    </div>
    </ContentTemplate>
      </asp:UpdatePanel>        
    <ul>
       <li style="margin-left:90px; margin-bottom:10px;">
       <asp:ImageButton ID="btnSubmit" AlternateText="submit button" runat="server" src="images/btn_Submit.png" onclick="btnSubmit_Click"/>
       </li>
    </ul>
</div>
            <!--CLOSE CONTENT DIV-->

</asp:Content>

Например:

Когда я пытался добавить некоторые серверные элементы управления ASP.NET, такие как <asp:testBox id="txtBox" runat="server"/> они не были доступны в коде позади.:

Ошибка: txtBox не определен в текущем контексте...

Что я делаю неправильно?

4b9b3361

Ответ 1

У меня возникла эта проблема, когда я переместил веб-сайт в основное решение, создав проект приложения asp.net в решении и скопировав файлы aspx и aspx.cs. Я решил это, щелкнув правой кнопкой мыши на проекте и перейдя в веб-приложение. Это создало необходимые файлы designer.cs, которые содержат код для asp-объектов на странице aspx.

Ответ 2

Это происходит особенно со старыми вещами в визуальной студии.

В 1.1 (перед "частичными классами" ) вы всегда можете видеть декларации элемента управления в коде.

В более поздних версиях они перенесли это в файл cs.designer(так что теперь у вас есть частичные классы - часть в файле .cs.designer и часть в файле .cs).

Если вы работаете с визуальным студийным "проектом", вы можете открыть файл cs.designer и добавить свой контроль. Посмотрите, как все остальные элементы управления объявлены - все, что вам нужно сделать.

Если вы работаете с визуальным студийным "веб-сайтом", вам не повезло. Невозможно просмотреть или отредактировать файл cs.designer, потому что его нет, пока сайт не будет скомпилирован.

Ответ 3

Убедитесь, что файл designer.cs для страницы включен в проект. Щелкните правой кнопкой мыши и посмотрите, есть ли у вас опция "Включить в проект".

Ответ 4

если вы не можете найти элемент управления на странице .cs, просто добавьте ссылку управления на страницу designer.cs и попробуйте снова получить к ней доступ.

Я уверен, что это будет 100%. это то, что я узнал

Ответ 5

Просто нашел этот вопрос, и я понимаю, что он довольно старый, но я думаю, что у меня есть потенциальный ответ. Ваш код-код для частичного класса дизайнера может не включаться в проект - иногда бывает, когда вы переименовали и/или скопировали файл.

Перейдите на свою страницу (позвоните на Test.aspx) и раскройте свое дерево в обозревателе решений - вы видите файл Test.aspx.cs и Test.aspx.designer.cs? Если нет, найдите кнопку в верхней части обозревателя решений, помеченную "Показать все файлы". Щелкните по нему - если теперь вы видите файл .designer.cs, щелкните его правой кнопкой мыши и выберите "включить в проект". Это заставило меня пойти снова после того, как я столкнулся с этой проблемой.

Ответ 6

Вы переименовали свой файл проекта? Если у вас есть, то не забудьте переименовать Inherits в верхней части страницы ASPX.

Ответ 7

Если вы столкнулись с этой проблемой в VS2013 на веб-сайте (в отличие от веб-приложения) и имеете более одного файла aspx, использующего код, то вам нужно убедиться, что ВСЕ файлы aspx имеют точно такую ​​же коллекцию управления.

В предыдущих версиях Visual Studio это не было проблемой, но похоже, что VS2013 затянулся.

Надеюсь, это поможет кому-то - я только заметил это благодаря замечанию Сергея выше.

Ответ 8

Первый

  • Убедитесь, что вы присвоили идентификатор контроль

Если это не помогает

  • Закройте страницу, на которой вы добавили контроль
  • Перестроить/скомпилировать проект и снова откройте страницу.

Ответ 9

Вот список проблем, с которыми я сталкиваюсь, когда сталкиваюсь с подобными проблемами.

  • Убедитесь, что идентификаторы, которые вы связываете для использования в коде позади, фактически объявлены в разметке
  • Убедитесь, что у этих элементов есть сервер "runat ="
  • Если у вас возникли проблемы с конкретным элементом управления, попробуйте создать его рядом с верхней частью страницы, если это тоже не сработает, это проблема генерации кода.

Если 3. ваша проблема, временно удалите разметку элементов управления и любую ссылку, которую вы им предоставили в коде позади, то есть сделайте так, чтобы вы могли успешно построить. Закройте файл designer.cs, если он у вас открыт, и выполните перестройку. После чего попытайтесь повторно добавить базовый элемент управления (следующие шаги 1 и 2) и посмотрите, появляется ли он (он должен). Затем повторно добавьте свою метку по мере необходимости, и вы должны найти, что генерация кода работает снова.

Ответ 10

Используйте атрибут CodeBehind вместо атрибута CodeFile тега страницы.

Например:

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

Ответ 11

Это случилось со мной в проекте веб-сайта в VS2010, но поскольку я являюсь частью более крупной команды, у меня нет возможности конвертировать в веб-приложение, как предположил Доменик.

Оказывается, это потому, что я переключил свой редактор по умолчанию для файлов ASPX на "Редактор HTML" вместо "Редактор веб-форм". Я сделал это, потому что intellisense убивал мой компьютер всякий раз, когда я открывал ASPX файл. Когда я щелкнул правой кнопкой мыши на этой странице до "Открыть с..." в "Редакторе веб-форм" и снова добавил элементы управления, он отлично работал, и теперь они доступны в коде, расположенном за файлом.

Ответ 12

вручную введите объявление в другом частичном классе

Ответ 13

У меня была такая же проблема, когда 2 ASP-страницы использовали один и тот же код за файлом (это был проект веб-сайта ASP.NET в Visual Studio 2013, а не веб-приложение ASP.NET). Я решил проблему, изменив ее, чтобы использовать разные файлы кода за каждой страницей.

Ответ 14

Возможные причины:

  • несоответствие идентификатора.
  • runat = "server" не присутствует в элементе управления в файле .aspx.

Решение, которое я нашел, помимо исправления вышеизложенного, заключается в том, чтобы перестроить проект:

Еще одна вещь, которую вам нужно позаботиться, - прежде чем перестроить, закройте файл конструктора.

Ответ 15

У меня была аналогичная проблема. Я столкнулся с этой проблемой, когда попытался переименовать файл aspx. В моем случае имя класса не обновлялось из UpdateRecords в ModifyRecords, когда я переименовал файл aspx в ModifyRecords. Следовательно, ни один из элементов управления ASP.NET не был доступен из кода.

Код перед переименованием:

public partial class UpdateRecords : System.Web.UI.Page

Код после переименования:

public partial class ModifyRecords : System.Web.UI.Page

Если вы попытаетесь переименовать aspx файл или скопировать-вставить из другого файла, просто убедитесь, что имя класса обновлено.

Ответ 16

Добавить пустой файл .aspx.designer.cs в ваш проект

Чтобы иметь объявления автосоздания визуальной структуры элементов управления .aspx, вы можете добавить пустой проект YourWebPageName.aspx.designer.cs в свой проект.

Если вы добавили в проект извне, вы можете добавить его в свой проект, щелкнув правой кнопкой мыши проект, выбрав новый элемент и включив в проект новый файл .cs.

Затем, как только вы внесете незначительные изменения на страницу YourWebPageName в редакторе дизайна, Visual Studio заполнит ваш пустой файл .cs файлами декларациями.

Ответ 17

Убедитесь, что атрибут codeBehind в директиве страницы ссылается на файл cs, где вы вызываете элемент управления

Ответ 18

У меня та же проблема. Я нашел решение, удалив " PublicKeyToken = 31bf3856ad364e35"   Пространство имен = "System.Web.UI" TagPrefix = "asp" % > "на странице aspx, и теперь оно работает нормально.

Ответ 19

Если вы пытаетесь получить доступ к тегам из собственного встроенного метода в фоновом режиме, убедитесь, что этот метод не статичен, иначе вы не получите доступ к этим тегам...

<p #id="myTag" runat="server">...</p>

private static void myMethod(){
    myTag.InnerText = "Hello" //You will not have access to this tag
}

private void myMethod(){
    myTag.InnerText = "Hello"; //You have access to tags
}

Ответ 20

Столкнулась с аналогичной проблемой, поскольку элементы управления были либо внутри: "LoginView" или "AnonymousTemplate" и Viewstatemode были отключены.

Решено путем перемещения элементов управления Asp вне этих элементов тега

Ответ 21

У меня также была аналогичная проблема в прошлом. Как вы уже упоминали, проект был ранее создан кем-то другим, поэтому он должен быть закодирован в кодировке на основе VB, и вы можете проверить это в деталях компиляции web.config. Попробуйте скопировать содержимое страницы aspx на новую страницу С# aspx и вставить код, как он будет работать.

Ответ 22

Проблема заключается в том, что у вас могут быть несколько файлов aspx с кодовым файлом в указателях страниц в том же файле codebehind. Он ожидает, что один и тот же элемент управления будет существовать во всех файлах aspx, связанных с одним и тем же кодом, и, таким образом, выбросит ошибку компиляции.

Если у вас все еще есть проблема очистки, как указано выше, проверьте страницу дизайнера и восстановите ее.

Ответ 23

protected global::System.Web.UI.WebControls.CheckBox CheckBoxName ;

Добавьте имя вашего управляющего идентификатора в файл designer.cs, и оно будет доступно в вашем файле cs.

Ответ 24

Очень старый вопрос, но я столкнулся с этой проблемой сегодня и в итоге нашел решение, которое здесь не упоминалось. Итак, я поделюсь этим.

На странице есть три файла: ASPX, ASPX.CS и ASPX.Designer.CS

Когда вы редактируете HTML/разметку для ASPX напрямую (как я предпочитаю), он не обновляет конструктор автоматически. Вот почему он не обнаруживается в intellisense (по крайней мере для меня). Чтобы заставить IDE обновлять конструктор, у вас есть страница ASPX, открытая в Visual Studio (и она должна быть целевым файлом); нажмите на меню "Вид" и выберите "Дизайнер" (или нажмите Shift + F7); IDE покажет вам представление дизайна; щелкните правой кнопкой мыши в области дизайна и выберите "обновить" в контекстном меню; сохранить файл; выберите "разметку" в меню "Вид" (или снова нажмите Shift + F7); и проверьте файл конструктора, чтобы увидеть, существуют ли добавленные элементы управления в конструкторе.

Возможно, есть более простой способ, но это помогло мне получить доступ к элементу управления из кода, который я добавил в HTML вручную.

Ответ 25

Я решил эту проблему, заставив VS заново создать файл конструктора. Для этого 1. Я удалил свой файл designer.cs. 2. Скопировал файл конструктора другой страницы. 3. Переименовал файл конструктора и частичный класс в нем, чтобы он соответствовал названию моего кода страницы за классом. 4. Удалил все из кузова дизайнерского класса. 5. Вырежьте все элементы управления на странице разметки aspx. 5. Сохраните страницу aspx. 6. Вставил элементы управления обратно и снова сохранил файл. Это заставило VS воссоздать все элементы управления в пустом файле конструктора. Надеюсь, что это работает для вас.

Ответ 26

Убедитесь, что ваш элемент управления должен иметь сгенерированную ссылку на код! Например, если он находится в шаблоне списка, вам нужно найти ссылку на него в обработчике события привязки элемента.

Это привело меня в бешенство, потому что у меня было два элемента управления с одинаковым идентификатором, один был на уровне страницы, а другой - в шаблоне.

Я думал, что сгенерированная ссылка, которую я использовал, была для той, что в шаблоне, и я не мог понять, почему новый добавленный элемент управления в шаблоне не приводит к сгенерированной ссылке.