I have created two partial classes for a web page.
Now i have given a defination of one function say submit() that i m calling at OnSubmit event of button.
But this function is not being called, the program doesnot compiles as it is not able to search the defination of function, which was defined in another partial class. Is it possible to call this function or i have to give defination of function in same file where i m calling it
eg
<%@ Page Language="C#" MasterPageFile="~/Master Pages/LeftMenu.master" AutoEventWireup="true" CodeFile="Registration.aspx.cs" Inherits="Web_Pages_Authentication_Login_Management_Registration" Title="Registration" StylesheetTheme="Default Theme 1" %>
Registration.aspx.cs
public partial class Web_Pages_Authentication_Login_Management_Registration : System.Web.UI.Page
{
private string firstName;
private string lastName;
private string userName;
private string userPassword;
private string primaryEmail;
protected void btnSubmit_Click(object sender, EventArgs e)
{
Display();
}
}
Registration_Database.cs
public partial class Web_Pages_Authentication_Login_Management_Registration
{
const string dbFirstName = "@FirstName";
const string dbLastName = "@LastName";
const string dbUserName= "@UserName";
const string dbUserPassword = "@UserPassword";
const string dbPrimaryEmail = "@PrimaryEmail";
void Display()
{
firstName="XYZ"; //This variable is not accessible when i put both files in different directories
}
}
I am getting following error
Error 1 'Web_Pages_Authentication_Login_Management_Registration' does not contain a definition for 'Display' and no extension method 'Display' accepting a first argument of type 'Web_Pages_Authentication_Login_Management_Registration' could be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Administrator\Desktop\Online Test\Web Pages\Authentication\Login Management\Registration.aspx.cs 78 20 C:\...\Online Test\
Registration.aspx, Registration.aspx.cs, Registration_Database.cs are three files that are not in App_Code folder but belongs to one folder only out of which Registration.aspx.cs, Registration_Database.cs are partial classes and Registration.aspx is my design file. Plz let me know if u want to know some more info about my problem
I am not using DLL Files. No precompiled code
I think the problem you're experiencing is because your website is dynamically compiled, rather than a precompiled web application.
When the ASP.NET page is first accessed, the compiler will only look in the code behind file, and won't search all the other .cs files for possible extra code for the same class. Thus, it will never see the implementation of display()
, which in turn causes the code behind file to fail to compile.
I would certainly not use a method like this for what you seem to want to do, but you could define a custom class that derives from System.Web.UI.Page
and have your actual page derive from the new class. The class definition would have to be in App_Code
for a dynamically compiled website.
Registration.aspx.cs:
public partial class Web_Pages_Authentication_Login_Management_Registration : MyPage
{
protected void btnSubmit_Click(object sender, EventArgs e)
{
Display();
}
}
App_Code\MyPage.cs:
public class MyPage : System.Web.UI.Page
{
protected void Display()
{
// ...
}
}
In any case: you certainly shouldn't use static variables the way you are using them, this will cause problems if multiple people are using your site at the same time. Frankly, your example doesn't make much sense to me. Maybe if we had more information about what you're trying to accomplish, we could provide a best-practise way to do it.
Note that in your example, putting the second file in App_Code
directory will not make it work. That would simply result in two classes with the exact same class name (provided the namespaces match of course). It really doesn't like that :)