Как да поставя codebehind в множество файлове?

Сблъсквам се с много несъответствия по отношение на това какво ще се компилира и изпълни правилно в среда на Visual Web Developer 2008 Express и какво се проваля на моя уеб сървър.

По-конкретно, имам код на aspx и aspx.cs, плюс редица допълнителни .cs файлове в моя проект за уеб програмист. Създава се добре и се изпълнява добре под сървъра за разработка. След като кача файловете на моя сървър, изглежда, че задният код не е наясно с другите .cs файлове.

Какъв е правилният начин да накарам моето aspx приложение да наследи допълнителни .cs файлове?

--- Актуализация --- Тъй като наистина не намирам отговора, от който се нуждая, позволете ми да бъда малко по-ясен с това, което правя:

Имам три файла:

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="UtilClasses" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Default.aspx.cs

public partial class _Default : Page { }

App_Code/UtilClasses.cs

namespace UtilClasses {
  public class AClass {
    public const int A = 1;
  }
}

В този пример, ако се опитам да направя някое от следните неща, ще получа грешка при компилиране на моя уеб сървър:

  • Посочете App_Code с @Import
  • Извикайте съдържащия се в него код от aspx.cs codebehind или
  • Извикайте кода от aspx страницата.

Той се компилира добре в Web Developer 2008. Решението е уеб сайт, който се публикува автоматично на моя уеб сървър чрез FTP. Точният списък на публикуваните файлове е:

  • Default.aspx
  • Default.aspx.cs
  • App_Code/UtilClasses.cs
  • web.config

person Jesse Hallam    schedule 13.02.2009    source източник
comment
Коя версия на Web Developer използвате? Ако използвате Web Developer 2008 SP1, използвате ли уеб приложение (компилирано в dll в папката /bin) или проект за уеб сайт (компилиран в движение)?   -  person Zhaph - Ben Duguid    schedule 13.02.2009
comment
Това е Web Developer 08, не съм сигурен за сервизния пакет. Използвах WebApp, но реших, че един уеб сайт е по-подходящ за нуждите ми. Разгръща се автоматично на моя ftp. cs файловете се поставят в App_Code автоматично, но все още получавам грешка „нещо“ не съществува, когато се опитвам да извикам код от app_code   -  person Jesse Hallam    schedule 13.02.2009


Отговори (3)


Изглежда, че имате проблем с внедряването.

Просто публикувайте (в менюто за изграждане има елемент за публикуване) вашето уеб приложение/сайт в папка и след това преместете файловете в тази папка на вашия сървър.

Мисля, че имате стари асемблиращи файлове и нови класове във вашата директория.

Надявам се това да помогне

person Canavar    schedule 13.02.2009
comment
Публикуването не работи правилно. Помогни ми. В случай на проект с .aspx, .aspx.cs и .cs и двата *.cs файла не се публикуват. Избирам Само файлове, необходими за изпълнение... - person Jesse Hallam; 13.02.2009
comment
cs файловете не се публикуват, те са включени във вашите асемблиращи файлове в директорията bin. ако изтриете всички файлове от вашия тестов сървър и копирате всички файлове в директорията за публикуване, той трябва да работи, докато тествате във вашата среда за разработка. Вашият проблем е конфликт на файлове според мен. - person Canavar; 13.02.2009
comment
Може би тогава трябва да променя нещо в моята декларация на @Page. Когато изчистя отдалечената папка и след това публикувам отново, страницата ми се проваля с грешка на анализатора: The file '/test/testproj.aspx.cs' does not exist. - person Jesse Hallam; 13.02.2009
comment
Проблемът ми беше разрешен с компанията за уеб хостинг. Като се има предвид това, това се превърна в предпочитания от мен начин за разполагане на ASP.NET сайт. - person Jesse Hallam; 20.02.2009

Можете да използвате частични класове. Добавете файл ( *.cs) и дефинирайте вашия клас като частичен. Така че можете да разпространявате вашите методи, свойства в други файлове

person Sessiz Saat    schedule 13.02.2009

Това е много често срещан проблем при организирането на код във вашите уеб приложения. Ето някои насоки, които да ви помогнат да се справите с проблема си.

  1. Ако използвате един проект и той е проект за уебсайт на ASP.net, поставете вашите .cs файлове в папката app_code.

  2. Използвайте пространствата от имена мъдро и следете какво има в кое пространство от имена. Ако имате нещо като Resharper, това спестява тази задача.

  3. В идеалния случай във вашия уеб проект трябва да имате само класове, свързани със страници и полезни. Създавайте библиотеки, като използвате C# express за други функции. Тествайте тези библиотеки с помощта на NUnit/MbUnit или други подобни.

  4. Ако имате съмнения дали нещо работи на Cassini, но не и в IIS. Разработчик или локален IIS е единственото решение.

Надявам се това да помогне!

person Perpetualcoder    schedule 13.02.2009
comment
Не мога да накарам папката App_Code да работи. Всичко, което поставя там, не се вижда от приложението ми както в Web Developer, така и по време на изпълнение. Просто получавам грешки по време на изпълнение Такива и такива не съществуват в текущия контекст. - person Jesse Hallam; 13.02.2009
comment
Не можете да инсталирате добавки като ReSharper към екземпляр на Web Developer, само в пълната версия на Visual Studio. - person Zhaph - Ben Duguid; 13.02.2009