#c# #asp.net
#c# #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 не определен в текущем контексте…
Что я делаю не так?
Комментарии:
1. Вы добавили
runat="server"
в определение элемента управления?2. мой вопрос был очень простым, я просто говорю, что мои новые элементы управления, которые я добавляю на свою страницу, недоступны в исходном коде …… есть ли что-то, что вам трудно понять?
3. Например: когда я пытался добавить некоторые asp.net элементы управления на стороне сервера, такие как ‘code’ <asp: TestBox id=»txtBox» runat=»server»/> недоступны в исходном коде, означают txtBox.текстовая ошибка txtBox не определен в текущем контексте…
4. В настоящее время у меня та же проблема: я ссылаюсь на пользовательский элемент управления внутри разметки aspx страницы (с тегами ID и runat). Из исходного кода пользовательский элемент управления не распознается как элемент страницы, ПОКА я не изменю идентификатор пользовательского элемента управления. Странное поведение, которое я еще не исправил.
Ответ №1:
У меня возникла эта проблема, когда я перенес веб-сайт в основное решение, создав asp.net проект приложения в решении и копирование файлов aspx и aspx.cs поверх. Я решил это, щелкнув правой кнопкой мыши по проекту и преобразовав его в веб-приложение. Это создало необходимые файлы designer.cs, которые содержат код для объектов asp на странице aspx.
Комментарии:
1. Преобразование в веб-приложение скрыто в меню проекта, у меня это сработало
2. Действительно странно иметь повторяющуюся проблему 6 лет спустя, решать ее самостоятельно, не осознавая этого, а затем натыкаться на свой собственный ответ SO, который помог бы вчера.
Ответ №2:
Это происходит особенно со старыми материалами в Visual Studio.
В версии 1.1 (до «частичных классов») вы всегда могли видеть объявления элементов управления в исходном коде.
В более поздних версиях они переместили это в файл cs.designer (так что теперь у вас есть частичные классы — часть в файле .cs.designer, а часть в файле .cs).
Если вы работаете с «проектом» visual studio, то вы можете открыть файл cs.designer и добавить свой элемент управления. Просто посмотрите, как объявлены все остальные элементы управления — это все, что вам нужно сделать.
Если вы работаете с «веб-сайтом» Visual Studio, то вам не повезло. Нет способа просмотреть или отредактировать файл cs.designer, потому что его нет до тех пор, пока веб-сайт не будет скомпилирован.
Ответ №3:
Убедитесь, что файл designer.cs для страницы включен в проект. Щелкните по нему правой кнопкой мыши и посмотрите, появится ли у вас опция «Включить в проект».
Комментарии:
1. Это сделало это! Я сделал копию проекта и добавил его в свое решение. Скопировано во всем содержимом, страницах и т.д. После того, как 1 включил каждый файл конструктора, все мои ошибки исчезли 🙂
Ответ №4:
Только что нашел этот вопрос, и я понимаю, что он довольно старый, но я думаю, что у меня есть потенциальный ответ. Ваш исходный код для частичного класса разработчика может быть не включен в проект — иногда это происходит, когда вы переименовали и / или скопировали файл.
Перейдите на свою страницу (назовем ее Test.aspx) и разверните ее дерево в обозревателе решений — видите ли вы файлы с именами Test.aspx.cs и Test.aspx.designer.cs? Если нет, найдите кнопку в верхней части обозревателя решений с пометкой «Показать все файлы». Щелкните по нему — если вы сейчас видите там файл .designer.cs, щелкните по нему правой кнопкой мыши и выберите «включить в проект». Это заставило меня снова начать после того, как я столкнулся с этой проблемой.
Ответ №5:
если вы не можете найти элемент управления на странице .cs, просто добавьте ссылку на элемент управления на странице designer.cs и попробуйте получить к нему доступ еще раз.
Я уверен, что это будет на 100%. это то, что я узнал
Комментарии:
1. Добро пожаловать в stackoverflow. Вы могли бы сделать свой ответ более полезным, добавив ссылки.
2. Отклонил этот ответ. Конечно, это устраняет проблему, но никогда не следует изменять код конструктора, как заявил @Omeed. Изменение может быть перезаписано, когда Visual Studio вносит изменения в файл.
Ответ №6:
Вы переименовали файл вашего проекта? Если они у вас есть, не забудьте переименовать наследуемые элементы в верхней части вашей ASPX-страницы.
Ответ №7:
Используйте CodeBehind
атрибут вместо CodeFile
атрибута тега страницы.
Например:
<%@ Control Language="C#" AutoEventWireup="true" **CodeBehind**="Results.ascx.cs" Inherits="MyApp.Results" %>
Ответ №8:
Если вы столкнулись с этой проблемой в VS2013 на веб-сайте (в отличие от веб-приложения) и у вас есть несколько файлов aspx, совместно использующих codebehind, тогда вам нужно убедиться, что ВСЕ файлы aspx имеют точно такую же коллекцию элементов управления.
В предыдущих версиях Visual Studio это не было проблемой, но, похоже, VS2013 ужесточился.
Я надеюсь, что это кому-то поможет — я заметил это только благодаря комментарию Сергея выше.
Комментарии:
1. Это обычное дело при копировании страниц. Если вы скопируете страницу в VS, это создаст 2 новых файла (html и исходный код), но имена базовых классов не изменятся. Вам нужно будет изменить имя класса в файле code behind, параметр Inherits в файле aspx и параметр CodeFile в файле aspx.
Ответ №9:
Первый
- Убедитесь, что вы присвоили элементу управления идентификатор
Если это не поможет
- Закройте страницу, на которую вы добавили элемент управления
- Перестройте / скомпилируйте проект и снова откройте страницу
Комментарии:
1. я сделал все, перестроил проект, очистил проект, но та же проблема — новые элементы управления недоступны в исходном коде
2. мой файл code behind имеет более 3000 символов, поэтому я не могу его загрузить
3. означает, что в моем файле code behind более 3000 слов, поэтому я не могу его загрузить
Ответ №10:
Это случилось со мной в проекте веб-сайта в VS2010, но поскольку я являюсь частью более крупной команды, у меня нет возможности конвертировать в веб-приложение, как предложил Доминик.
Оказывается, это было потому, что я переключил свой редактор по умолчанию для ASPX-файлов на «HTML Editor» вместо «Web Form Editor». Я сделал это, потому что intellisense отключал мой компьютер всякий раз, когда я открывал ASPX-файл. Когда я щелкнул правой кнопкой мыши на этой странице, чтобы «Открыть с помощью …» в «Редакторе веб-форм», и снова добавил элементы управления, это сработало отлично, и теперь они доступны в файле code behind.
Ответ №11:
Добавьте пустой файл .aspx.designer.cs в свой проект
Чтобы в Visual Studio можно было автоматически создавать объявления элементов управления страницей .aspx, вы можете добавить пустой YourWebPageName.aspx.designer.cs -файл в свой проект.
Если они добавлены в проект извне, вы можете добавить их в свой проект, щелкнув правой кнопкой мыши проект, выбрав новый элемент и включив новый файл .cs в свой проект.
Затем, как только вы внесете незначительные изменения в свою страницу YourWebPageName в редакторе дизайна, Visual Studio заполнит ваш пустой файл .cs объявлениями.
Ответ №12:
Вот список устранения неполадок, через которые я прохожу, когда сталкиваюсь с подобными проблемами.
- Убедитесь, что идентификаторы, которые вы привязываете к использованию в исходном коде, действительно объявлены в разметке
- Убедитесь, что у этих элементов есть ‘runat=»server»‘
- Если у вас возникли проблемы с определенным элементом управления, попробуйте создать его в верхней части страницы, если и это не сработает, это проблема генерации кода
Если ваша проблема связана с 3., временно удалите разметку элементов управления и любые ссылки, которые у вас были на них в исходном коде, т. Е. сделайте это так, чтобы вы могли успешно выполнять сборку. Закройте файл designer.cs, если он у вас открыт, и выполните перестройку. После чего попробуйте повторно добавить базовый элемент управления (следуя шагам 1 и 2) и посмотрите, отображается ли он (он должен). Затем повторно добавьте свою разметку по мере необходимости, и вы должны обнаружить, что генерация кода снова работает.
Комментарии:
1. моя проблема все еще существует, элементы управления, которые были объявлены на странице ранее, доступны, но новые элементы управления недоступны
2. убедитесь, что у вас не открыт designer.cs и что ваше решение успешно создается без необходимых вам элементов управления. Я обнаружил, что как только я смогу снова успешно создать решение, я смогу снова добавлять элементы управления. Также, просто в качестве теста, удалите атрибут ‘class’, технически вы должны использовать ‘CssClass’ при добавлении стиля класса в asp: textbox, хотя я никогда не считал это проблемой.
3. это почти исправило проблему. Вместо этого я переместил элемент управления в начало страницы и проверил, могу ли я получить к нему доступ оттуда. На самом деле так и было. поэтому я шаг за шагом переместил элемент управления туда, где я этого хотел. пока я больше не мог получить к ним доступ из исходного кода. Оказывается, я использую RadPanelItem, и это каким-то образом нарушило объявление чего-либо внутри него. по крайней мере, теперь я знаю, в чем моя проблема.
Ответ №13:
вручную введите объявление в другом частичном классе
Комментарии:
1. вы имеете в виду объявить элементы управления в исходном коде file или создать другой класс, который предоставляет реализацию Partial class еще раз, если нет, пожалуйста, объясните это
2. например. у вас есть asp: RequiredFieldValidator в приведенном выше коде, если вы попытаетесь найти его объявление в файле codebehind, где вы написали свои собственные функции, вы не найдете его объявление в этом файле. на самом деле с этим будет другой частичный класс. вы можете найти это в обозревателе решений. если вы откроете его, вы сможете найти этот файл. google «частичные классы в asp.net »
Ответ №14:
У меня была такая же проблема, когда 2 страницы ASP использовали один и тот же код в файле (это было ASP.NET Проект веб-сайта в Visual Studio 2013, а не ASP.NET Веб-приложение). Я решил проблему, изменив ее, чтобы использовать разные файлы Code Behind для каждой страницы.
Комментарии:
1. Если вы все еще хотите использовать один элемент управления в code behind, убедитесь, что элемент управления размещен во всех файлах конструктора, которые ссылаются на него.
Ответ №15:
Возможные причины:
- несоответствие идентификаторов.
- runat=»server» отсутствует в элементе управления в файле .aspx.
Решение, которое я нашел, помимо исправления вышеизложенного, заключается в перестройке проекта:
Еще одна вещь, о которой вам нужно позаботиться, это перед перестройкой закрыть файл конструктора.
Комментарии:
1. Проект Rebuild был исправлением для меня!
Ответ №16:
У меня была похожая проблема. Я столкнулся с этой проблемой, когда попытался переименовать aspx-файл. В моем случае имя класса не было обновлено с UpdateRecords на ModifyRecords, когда я переименовал aspx-файл в ModifyRecords. Следовательно, ни один из ASP.NET элементы управления были доступны из исходного кода.
Исходный код перед переименованием:
public partial class UpdateRecords : System.Web.UI.Page
Оставшийся код после переименования:
public partial class ModifyRecords : System.Web.UI.Page
Если вы попытаетесь переименовать aspx-файл или скопировать-вставить из другого файла, просто убедитесь, что имя класса обновлено.
Ответ №17:
Убедитесь, что атрибут codeBehind в директиве page ссылается на файл 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 на вашу недавно созданную страницу C # aspx и вставьте код, и он тоже будет работать.
Ответ №22:
Проблема в том, что у вас может быть несколько aspx-файлов, директива codefile in page указывает на один и тот же файл codebehind. Ожидается, что один и тот же элемент управления будет существовать во всех файлах aspx, связанных с одним и тем же исходным кодом, и, таким образом, выдает ошибку компиляции.
Если у вас все еще возникает проблема с очисткой, аналогичная упомянутой выше, проверьте страницу конструктора и создайте ее заново.
Ответ №23:
protected global::System.Web.UI.WebControls.CheckBox CheckBoxName ;
Добавьте свое имя идентификатора элемента управления в ваш designer.cs, и тогда оно будет доступно в вашем cs-файле.
Ответ №24:
Очень старый вопрос, но сегодня я столкнулся с этой проблемой и в итоге нашел решение, которое я не видел упомянутым здесь. Итак, я поделюсь этим.
На странице есть три файла: ASPX, the ASPX.CS и ASPX.Designer.CS
Когда вы редактируете HTML / разметку для ASPX напрямую (как я предпочитаю делать), это не приводит к автоматическому обновлению конструктора. Вот почему это не отображается в intellisense (по крайней мере, для меня). Чтобы заставить IDE обновить конструктор, у вас есть страница ASPX, открытая в Visual Studio (и пусть это будет сфокусированный файл); щелкните в меню «вид» и выберите «конструктор» (или нажмите Shift F7); IDE покажет вам представление дизайна; щелкните правой кнопкой мыши в области дизайна и выберите «обновить» из контекстного меню; сохраните файл; выберите «разметка» в меню «Вид» (или снова нажмите Shift F7); и проверьте файл конструктора, чтобы увидеть, соответствуют ли элементы управления, которые вы используете. добавленные теперь существуют в конструкторе.
Мог бы быть более простой способ, но это сработало для меня, чтобы иметь возможность получить доступ к элементу управления из исходного кода, который я добавил в HTML вручную.
Ответ №25:
Убедитесь, что ваш элемент управления вообще должен содержать ссылку на сгенерированный код! Например, если это в шаблоне списка, то вам нужно будет найти ссылку на него в обработчике события привязки элемента.
Это вывело меня из себя, потому что у меня было два элемента управления с одинаковым идентификатором, один был на уровне страницы, тогда как другой был в шаблоне.
Я думал, что сгенерированная ссылка, которую я использовал, была для ссылки в шаблоне, и я не мог понять, почему недавно добавленный элемент управления в шаблоне не привел к сгенерированной ссылке.
Ответ №26:
Я решил эту проблему, заставив VS повторно создать мой файл конструктора. Для этого :
- Я удалил свой файл designer.cs.
- Скопировал файл конструктора другой страницы.
- Переименовал файл конструктора и частичный класс в нем, чтобы соответствовать названию моей страницы code behind class.
- Удалил все из тела класса designer.
- Удалите все элементы управления со страницы разметки aspx.
- Сохранена страница aspx.
- Вставил элементы управления обратно и снова сохранил файл.
Это заставило VS воссоздать все элементы управления в пустом файле конструктора.
Надеюсь, у вас это сработает.
Ответ №27:
Это старый код, но сегодня я столкнулся с той же проблемой, и, поразмыслив тут и там, я обнаружил, что элементы управления, которые вы добавляете в GridViews, генерируются динамически, поэтому вам нужно обращаться к ним на основе индекса, в котором они присутствуют (точно так же, как списки / массивы в обычном программировании), а не идентификаторов.
Следовательно, если вы добавляете свои новые элементы управления в GridView, вам нужно будет получить к ним доступ через индексы. Хорошей практикой было бы создать ENUM в исходном коде для индексов элементов GridView.
Ответ №28:
Итак, старый вопрос, но если это поможет, попробуйте переместить элементы управления за пределы любого другого элемента управления, потому что доступ к ним отличается.