В проекте ASP.NET MVC4 у меня есть подкаталог под названием App_Code (вручную созданный). Он содержит файлы .cs с классами в них. Я использую эти классы в нескольких разных файлах .cshtml. Файлы .cshtml компилируются и работают как ожидалось.Добавление классов в проект ASP.NET MVC4
Мои классы в пространстве имен:
namespace Foo {
public class Bar {
// ... properties
}
}
Я хочу использовать один из этих классов в контроллере:
using System;
// ...
using Foo;
namespace MyProject.Controllers
{
public class MyController {
Foo.Bar SelectedBar { get; set; }
}
}
Когда я делаю это, я получаю ошибку компиляции:
Error 3 The type or namespace name 'Foo' could not be found (are you missing a using directive or an assembly reference?)
Если я перемещаю файлы .cs в каталог контроллеров, то классы .cshtml не могут «видеть» их.
Как вы добавляете классы в проект MVC4? Должен ли я создавать второй проект?
Я занимаюсь C# уже много лет, но все это были Windows Forms и XAML. С ASP.NET я нахожусь на кривой обучения, как носорог на коньках.
Что-то очень странное происходит с вашим проектом, если ваши представления могут «видеть» код только потому, что он находится в App_Data. Они должны иметь доступ только к пространствам имен, указанным в элементе файла web.config в папке «Представления». Аналогично, ваши контроллеры должны иметь доступ ко всему коду в вашем проекте, даже если это имя ранее специального типа, такое как App_Code. Этот проект начал свою жизнь как сайт, не относящийся к MVC? –
Dave
@Dave Я только что создал проект вчера. Я добавил пространство имен в верхний уровень web.config, но не тот, что был в Views. О чем я даже не подозревал. Derp. Не то чтобы это имело какое-то значение. –