Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC 4 области нескольких проектов / 8 сообщений из 8, страница 1 из 1
29.04.2013, 22:53
    #38244565
yardie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
Доброго времени суток.
Первый раз работал с областями в MVC,
сделал ссылку в родительском проекте на дочерний проект, в дочернем проекте удалил Global.asax и создал класс
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Routes : AreaRegistration
    {
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
              "Admin_Default",
              "Admin/{controller}/{action}/{id}",
              new { controller = "Adm", action = "AdmIndex", id = "" },
              new string[] { "Admin.Controllers" }
            );
        }

        public override string AreaName
        {
            get { return "Admin"; }
        }
    }



В родительском проекте в Global.asax добавил строку AreaRegistration.RegisterAllAreas(); и теперь он выглядит вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
        }
    }



столкнулся вот с такой проблемой, при переходе по ссылке из родительского проекта на страницы дочернего
Код: html
1.
 <li>@Html.ActionLink("Adm", "AdmIndex", "Adm", new {area = "Admin"}, null)</li>


вылетает ошибка
Код: xml
1.
2.
3.
4.
 Не удалось найти данный ресурс.
Описание: HTTP 404. Возможно, искомый ресурс (или один из зависимых от него компонентов) удален, получил другое имя или временно недоступен.  Просмотрите следующий URL-адрес и проверьте, что он введен правильно.

Запрошенный URL: /Admin



и причём путь выглядит вот так http://localhost:6547/Admin хотя как я понимаю должно быть что-то вроде этого
http://localhost:6547/Admin/Adm/AdmIndex - но если написать этот путь то ошибка всё равно точно такая же...
Подскажите где я допустил ошибку что не так сделал?
...
Рейтинг: 0 / 0
29.04.2013, 23:15
    #38244590
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
yardie,

new string[] { "Admin.Controllers" }

задай полное имя неймспейса

попробуй перекомпилить. я незнаю конечно, на первый взгляд вроде все путем.

ссылка выглядит как /Admin потому что установлены умолчания new { controller = "Adm", action = "AdmIndex", id = "" }

кстати замени id = UrlParameter.Optional

проверь еще раз неймспейсы, они должны быть полными и референсы.
...
Рейтинг: 0 / 0
29.04.2013, 23:20
    #38244596
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
yardie,

на всякий случай, проверь вот этот пост

http://stackoverflow.com/questions/5382524/asp-net-mvc3-areas-in-separate-assemblies
...
Рейтинг: 0 / 0
30.04.2013, 00:06
    #38244634
yardie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
у меня в солюшене несколько проектов и все они называются вот по такому шаблону: Site.Admin и Site.Web
может ли это играть какую-то роль?

Код: c#
1.
id = UrlParameter.Optional

- изменил, не помогло((
...
Рейтинг: 0 / 0
30.04.2013, 00:09
    #38244635
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
yardie,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Routes : AreaRegistration
    {
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
              "Admin_Default",
              "Admin/{controller}/{action}/{id}",
              new { controller = "Adm", action = "AdmIndex", id = UrlParameter.Optional },
              new string[] { "Site.Admin.Controllers" }
            );
        }

        public override string AreaName
        {
            get { return "Admin"; }
        }
    }



Попробуй. Возможно решение в этом: new string[] { "Site.Admin.Controllers" }
...
Рейтинг: 0 / 0
30.04.2013, 00:34
    #38244648
yardie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
hVosttyardie,
Попробуй. Возможно решение в этом: new string[] { "Site.Admin.Controllers" }

Пробовал и так, к сожалению не работает(((((
...
Рейтинг: 0 / 0
30.04.2013, 01:48
    #38244671
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
yardie,

Один из разработчиков MVC в далеком 2009-ом писал:

авторRecommend that you use single-project areas, as we've made considerable strides in its support and stability. The multi-project areas code is very fragile, and there is a higher-than-zero likelihood that it will be removed or pushed to Futures in the near future.

Ныне не все так страшно, однако надо понимать, что вью в сборки просто так не засовываются, главный проект ничего не знает ни про какую папку чужой Area, ведь все что у него есть, это подключенная сборка в референсах (т.е. DLL). Посему, Area в отдельном проекте — нештатная ситуация. Различные источники предлагают использовать RazorGenerator, чтобы упаковать View's в сборку со всеми потрохами. Это имеет смысл только в одном случае: используемый многократно, подключаемый модуль, независимый от целевого проекта. Админка — не тот случай совершенно. Хотя есть шанс костылями и воркэраундами добиться приемлемого поведения.

Посему, учитывая манящую притягательность еще не опробованных в деле граблей, предлагаю ознакомиться вот с этим материалом http://geekswithblogs.net/cokobware/archive/2013/01/15/asp.net-mvc-4-pluggable-application-modules.aspx

Достаточно свежий, хоть и не очень подробный. Да и на стеке немало полезного на тему. А лучше задуматься, надо ли оно вообще ))
...
Рейтинг: 0 / 0
30.04.2013, 20:43
    #38245772
yardie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC 4 области нескольких проектов
Предложите альтернативу, если она будет хороша, то всерьёз подумаю отказаться от областей)))
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC 4 области нескольких проектов / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]