Unable to call App_Code class from a code-behind

Don Rhummy picture Don Rhummy · Jan 7, 2013 · Viewed 32.1k times · Source

I have a class in a file that's in the "App_Code" folder. I'm able to use this in an "aspx" file but not from a code-behind file. How do I make it visible to a code-behind?

NOTE: This is ASP.Net on Mono and I'm writing the classes directly, not using an IDE to compile them

My files:

ASPX FILE (testappcode.aspx)

<%@ Page language="c#" src="TestAppCode.aspx.cs" Inherits="TestAppCode.TestAppCode" AutoEventWireup="true" %>
<html>
  <head>
    <title>Test App_Code Folder</title>
  </head>
  <body>
    <form id="contactForm" runat="server">
    <asp:TextBox id="Name" runat="server" ></asp:TextBox>
    <asp:TextBox id="Age" runat="server" ></asp:TextBox>
    <asp:Button ID="Submit" runat="server" Text="Submit" onclick="SubmitForm" />
    </form>
  </body>
<html>

CODE BEHIND (TestAppCode.aspx.cs)

using System;
using System.Web.UI.WebControls;

namespace TestAppCode
{
    public class TestAppCode : System.Web.UI.Page
    {
    protected void SubmitForm(object sender, EventArgs e)
    {
        //It fails here with the error: CS0246: The type or namespace name
        //`MyAppCodeClass' could not be found. Are you missing a using
        //directive or an assembly reference?
        MyAppCodeClass m = new MyAppCodeClass();
    }
    }
}

APP_CODE CLASS (App_Code/MyAppCodeClass.cs)

public class MyAppCodeClass
{
         public MyAppCodeClass() {}
}

I tried giving it a namespace, but that doesn't fix the issue.

Answer

Win picture Win · Jan 8, 2013

Change your class' Build Action to Compile.

enter image description here