I have a project that was previously built by someone else. When I try to add a new control to the page, I can't access it in the code behind. When I try to access it there's an error message that the Control is not defined in the current context.
<%@ 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>
For Example:
When I was trying to add some ASP.NET server side controls like <asp:testBox id="txtBox" runat="server"/>
they were not accessible in the code behind.:
Error: txtBox is not defined in the current Context ...
What am I doing wrong?
I had this problem when I moved a website into a main solution by creating an asp.net application project in the solution and copying aspx & aspx.cs files over. I solved it by right clicking on the project and converting to a web application. This created the necessary designer.cs files which contain the code for the asp objects on the aspx page.
This happens especially with older stuff in visual studio.
In 1.1 (before "partial classes") you could always see the control declarations in the code-behind.
In later versions, they moved that into a cs.designer file (so now you've got partial classes -- part in the .cs.designer file, and part in the .cs file).
If you're working with a visual studio "project", then you can open the cs.designer file, and add your control. Just look at how all of the other controls are declared -- that's all you have to do.
If you're working with a visual studio "website", then you're out of luck. There's no way to view or edit the cs.designer file, because it isn't there until the website is compiled.
Check to ensure the designer.cs file for the page is included in the project. Right click it and see if you get the option to "Include in project."
Just found this question, and I realise it's quite old, but I think I have a potential answer. Your code-behind for the designer's partial class might not be included in the project - sometimes happens when you've renamed and/or copied the file.
Go to your page (let's call it Test.aspx) and expand its tree in the Solution Explorer - do you see a file called Test.aspx.cs and Test.aspx.designer.cs? If not, look for a button at the top of the Solution Explorer marked Show All Files. Click it - if you now see the .designer.cs file there, right-click it and select "include in project". This got me going again after I ran into this problem.
if you are unable to find the control in .cs page, simply add the control reference in designer.cs page and try to access it again.
I'm sure it will 100%. this is what i learned
Have you renamed your project file? If you have, then remember to rename the Inherits at the top of your ASPX page.
If you're experiencing this issue in VS2013 in a Website (as opposed to a Web Application) and have more than one aspx file sharing a codebehind then you need to make sure that ALL the aspx files have exactly the same collection of controls.
In previous versions of Visual Studio this wasn't an issue but it looks like VS2013 has tightened up.
I hope this helps someone - I only spotted it thanks to Sergey's comment above.
First
If this doesn't help
Use CodeBehind
attribute instead of CodeFile
attribute of Page tag.
Eg:
<%@ Control Language="C#" AutoEventWireup="true" **CodeBehind**="Results.ascx.cs" Inherits="MyApp.Results" %>
This happened to me in a website project in VS2010, but as I'm part of a larger team, I don't have the option to convert to Web Application as Domenic suggested.
It turns out it was because I had switched my default editor for ASPX files to "HTML Editor" instead of "Web Form Editor". I did this because intellisense was killing my computer whenever I opened an ASPX file. When I right clicked on this page to "Open With..." the "Web Form Editor", and added the controls again, it worked perfectly and they're now available in the code behind file.
Add an empty .aspx.designer.cs file to your project
To have visual studio autocreate declarations of .aspx page controls you can add an empty YourWebPageName.aspx.designer.cs -file to your project.
If added to the project externally you can add it to your project by right clicking the project, selecting new item and include the new .cs file into your project.
Then, as soon as you make a minor modification to your YourWebPageName page in the design editor Visual Studio will populate your empty .cs file with declarations.
Here are a list of troubleshooting I go through when I get similar problems.
If 3. is your issue, temporarily remove the mark-up of the controls and any reference you had to them in the code behind, ie make it so you can successfully build. Close the designer.cs file if you have it open and do a rebuild. After which try to re-add a basic control (following step 1 and 2) and see if it shows up (it should). Then re-add your mark up as needed and you should find the code generation is working again.
manually enter declaration in other partial class
I had the same issue when 2 ASP Pages were using the same Code Behind file (It was ASP.NET Web Site project in Visual Studio 2013, not an ASP.NET Web Application). I have solved the problem by changing it to use different Code Behind files for each page.
Possible reasons:
The solution that I found, apart from correcting the above, is to rebuild the project:
One more thing you need to take care is, before rebuild, close the designer file.
I had a similar problem. I faced this problem when I tried to rename the aspx file. In my case, the class name was not updated from UpdateRecords to ModifyRecords when I renamed the aspx file to ModifyRecords. Hence none of the ASP.NET controls were accessible from the code behind.
Code behind before renaming:
public partial class UpdateRecords : System.Web.UI.Page
Code behind after renaming:
public partial class ModifyRecords : System.Web.UI.Page
If you try to rename aspx file or copy-paste from different file, just make sure, the class name is updated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With