I am pretty new to c# and asp.net and I've encountered an error on a page with the error stating that
"There can be only one 'page' directive."
The code is as follows:
<%# Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="AddUser.aspx.cs" Inherits="OEPD.AddUser" %>
I have this page linked into another page using the
<!-- #include file="~/Admin/AddUser.aspx --> function.This page is also using the MasterPage
<%# Page Title=" Admin Home" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="AdminHome.aspx.cs" Inherits="OEPD.Admin.AdminHome" %>
How do I fix this? So it not only links in, but works without errors?
Thanks in advance.
p.s this is my first question so I apologise if it seems a bit vague.
You shouldn't use #include file in asp.net, because it's a classic asp mechanizm and there are better ways of doing such things in new version of framework. In order to reuse your code in many pages you could rewrite your "inner page" to user control or your "outer page" as another master page. Here is more info about this topic: ASP.NET equivalent of server side includes
Related
I am getting the
"The name 'ASP.net control' does not exist in the current context"
Error message. Guys, can you please help me find out the cause of this and how to remedy it!
Am I missing something here??
<%# Page Title="Amatola Water Activities" Language="C#" MasterPageFile="~/Site.Master"
AutoEventWireup="true" CodeFile="~/Default.aspx.cs"
Inherits="AWActivitiesWeb2.Default" %>
There could be several reasons behind this error, Looking at the <%# Page %> directive that you shared, you have specified the attribute as CodeFile="~/Default.aspx.cs" Which might be causing this issue because if you specify a CodeFile attribute, the designer.cs file does not regenerates itself. Either you manually specify each control you add into the designer.cs file or you should change the CodeFile attribute to a CodeBehind attribute.
The other issue could be with the control itself, if you won't specify runat="server" on the attribute then you won't get its reference in the Code Behind.
So, Modify your page directive with this line:
<%# Page Title="Amatola Water Activities" Language="C#"
MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="~/Default.aspx.cs" Inherits="AWActivitiesWeb2.Default" %>
I have a web application project in VS2013 with a Master Page and some content pages. My master page header is:
<%# Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage.master.cs" Inherits="MyProject.MasterPage" %>
I then right click on the Master Page in the solution explorer and select "Add Content Page". This produces a content page like the following for me:
<%# Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="True" CodeBehind="WebForm1.aspx.cs" Inherits="MyProject.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
</asp:Content>
What I do then is right click this "WebForm1" in the solution explorer and change the name to "Login"
This changes the header in the content page to:
<%# Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="True" CodeBehind="Login.aspx.cs" Inherits="MyProject.WebForm1" %>
Looks fine except it still says Inherits="MyProject.WebForm1" despite that no longer being the name of the content page.
So I figure, "OK I can just change Inherits="MyProject.WebForm1" to Inherits="MyProject.Login". Big mistake, because now I cannot reference any of the controls like TextBox, Label, etc. in my code behind file. I get a list of errors all along the lines of:
The name 'controlname' does not exist in the current context
So it looks like my page can no longer find the class for the controls correctly.
I tried deleting Login.aspx.designer.cs and then recreating it by going to Project -> Convert to web application but that did not work.
So long story short, my code works fine if I use the Inherits="MyProject.WebForm1" despite my page now being called Login. I also tried this with all my other pages and it is the same story.
Is this some kind of bug? Or is my method of adding content pages the problem?
Most likely in your code behind you have this:
namespace MyProject
{
public class WebForm1
This is what your page inherits in terms of the web site prokject, and that is what should be in the "Inhertis" attribute. Note that full class name, including namespace, is expected there.
So if you want to rename your page file - make sure you rename the class as well. Visual Studio does not do this automatically.
I am really new to C#/VB as a web coding language so apologies early if this is rudimentary
I have a vendor .NET solution i need to add an .aspx page to, which I've managed to do, but there are missing HTML items that are placed by backend .vb file code (we have the uncompiled code as well as the site code)
so for example, Report.aspx
uncompiled
<%# Page Language="vb" AutoEventWireup="false" Inherits="jobber.VU.Report"
CodeFile="Report.aspx.vb" %>
<%# Register TagPrefix="VU" Namespace="jobber.VU.Controls" %>
compiled
<%# page language="vb" autoeventwireup="false" inherits="jobber.VU.Report,
App_Web_report.aspx.cdcab7d2" enableEventValidation="false" %>
<%# Register TagPrefix="VU" Namespace="jobber.VU.Controls" %>
the VB backend
Namespace jobber.VU
Partial Class Report
Inherits ActionBase
End Class
End Namespace
How do I replicate that in just an ASPX page?
I tried this
<%# page language="vb" AutoEventWireup="false" Debug="true" %>
<%# Register TagPrefix="VU" Namespace="jobber.VU.Controls" %>
<%# Import Namespace="jobber.VU.ActionBase" %>
<VU:metatags id="headers1" format="none" runat="server"></VU:metatags>
and VU.Controls comes back fine, but the ActionBase class is not executing
I also attempted a <script runat=server, but it never took off the ground
You can have multiple pages inherit from the same page. So if you want to duplicate the functionality of the 'jobber.VU.Report page', just add a new page and inherit from it.
I have a website (asp.net 4) with 49 pages. The website is in vb.
But I added a forum (and called it "knowledgbase"), so it's like ... company.com/knowledgebase/ ... I configured the forum as a separate application in IIS7, and it's written in c#.
Is it possible to use one of my vb master pages in the c# forum? Or would I have to create an entirely separate c# master page?
Edit:
Basically, in the knowledgebase/default.aspx file, there's this:
<%# Page Language="C#" AutoEventWireup="true" ValidateRequest="false"
Inherits="YAF.ForumPageBase" culture="auto" uiculture="auto" %>
<%# Register TagPrefix="YAF" Assembly="YAF" Namespace="YAF" %>
<script runat="server">
I tried doing this:
<%# Page Language="C#" AutoEventWireup="true" ValidateRequest="false"
Inherits="YAF.ForumPageBase" culture="auto" uiculture="auto"
MasterPageFile="~/homepage.Master" %>
<%# Register TagPrefix="YAF" Assembly="YAF" Namespace="YAF" %>
<script runat="server">
But of course ... the page language says "c#" and the master page is written in vb. So the result was this (as expected):
Server Error in '/knowledgebase' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service
this request. Please review the following specific parse error details and modify your
source file appropriately.
Parser Error Message: The 'masterpagefile' attribute is not supported by the
'register' directive.
Short story.
This site was created by a friend of mine, who did not know that much C# or asp. And was firstly created in VS 2k3. When i converted it to VS 2k8 these errors started to crop up, there was also other issues with compiling that i managed to sort out ( Seemed to be released to VS 2k8 wanted design files )
Error message gotten:
An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: The file '/TestSite/Default.aspx.cs' does not exist.
Source Error:
Line 1: <%# Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="GuildStats._Default" %>
Line 2:
Line 3: <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server">
Defaults.aspx.cs
namespace GuildStats
{
public partial class _Default : System.Web.UI.Page
{
Defaults.aspx
<%# Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="GuildStats._Default" %>
Site.master.cs
namespace GuildStats
{
public partial class Site : System.Web.UI.MasterPage { }
}
Site.master
<%# Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="GuildStats.Site" %>
In Default.aspx change CodeFile to CodeBehind. You'll probably have to do the same for the Site.master.
See: CodeFile and Code-Behind
Web Site projects use CodeFile, Web Application projects use CodeBehind.
CodeFile requires the source file, it is compiled on the fly when the page is loaded, CodeBehind requires the compiled code.
My guess is that your problem was created when you changed your project type from a WebApp to a Web Site or vice-versa. If you do this, you have to manually change the directives in the existing files, new files will have the right directive automatically.