Так что я работал над приложением MVC2 просто для того, чтобы по-настоящему выучить веревки. Что мне не понравилось в настройке по умолчанию, так это то, что представления, модели и контроллеры были в одной сборке. Это было несложно преодолеть, перенесли оба проекта в другие и перенесли содержимое каждой папки.
Однако теперь пришло время начать играть с ролями пользователей. Я украшаю действие контроллера так:
[Authorize(Roles = "Admin"), AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditProject(Guid Id, FormCollection formValues){}
Итак, вот как настроено мое решение;
MySolution.Web.Views
<- Все aspx /
Ascx материал </li>
MySolution.Controllers
<- Все контроллеры, включая
AccountController по умолчанию, который приходит
с приложением MVC2 </li>
У меня также есть «AccountModel» по умолчанию в пространстве имен MySolution.Controllers.AccountModels
, в котором находится класс LogOnModel
. Теперь, когда я запускаю программу и прошу контроллер выполнить действие, которое требует определенной роли (которой я не являюсь), я получаю следующую ошибку:
«Сообщение об ошибке компилятора: CS0234: имя типа или пространства имен« Модели »не существует в пространстве имен« MySolution.Web »(отсутствует ссылка на сборку?)»
В качестве ошибки источника также выделяется следующая строка:
"открытый класс views_account_logon_aspx: System.Web.Mvc.ViewPage, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler"
и комментирует строку и файл ошибки как;
"Исходный файл: c: \ Users \\ AppData \ Local \ Temp \ Временные файлы ASP.NET \ root \ d1b48054 \ 1ce7c091 \ App_Web_logon.aspx.5f83eb8c.mdfplvvy.0.cs"
Итак, я попытался перейти к этому файлу и вручную ввести правильное пространство имен LogOnModel, но каждый раз, когда я запускаю проект, создается новая версия этого файла с неверным расположением воспроизводимого LogOnModel. Очевидно, что в приложении есть что-то, что все еще ищет в исходном местоположении AccountModel, которого больше нет.
Я посмотрел в своем файле web.config и не могу найти нигде, который, по-видимому, ссылается на LogOnModel в пространстве имен MySolution.Web.
Кто-нибудь знает, как я могу сообщить приложению, где сейчас находится LogOnModel?
Фактическое сбой приложения в действии LogOn AccountController:
public ActionResult LogOn()
{
return View(); // Failing here
}
Так, может, это как-то связано с маршрутизацией? Я не коснулся настройки по умолчанию для файла Global.asax.