2011-01-29 2 views
0

Я новичок в приложении mvc2 (asp.net 3.5 + sp1 + mvc2). Я создал обработчик «HyphenatedRouteHandler» (путем наложения MvcRouteHandler), чтобы изменить область, контроллер и заклинания действия.
Код:глядя в applicationatio main Просмотры вместо Просмотров конкретной области в MVC2

public class HyphenatedRouteHandler : MvcRouteHandler 
{ 
    protected override IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
     if (requestContext.RouteData.Values["area"]!=null) 
      requestContext.RouteData.Values["area"] = requestContext.RouteData.Values["area"].ToString().Replace("-", "_"); 

     requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("-", "_"); 
     requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("-", "_"); 
     return base.GetHttpHandler(requestContext); 
    } 
} 

Мой direcctory stucture выглядит следующим образом:
Области
--Entertainment_Karmanuk
--Controllers
---- Drama_NatakController.cs
--Models
--Views
---- Drama_Natak
------ Schedule_Timetable.aspx

Он отлично работает, если я не использую Area, но когда я использую Area она ищет вид на внешних основных точки зрения, а не вид под видом .. поэтому он дает ошибку:

Вид «Schedule_Timetable» или его хозяин не найдено. Поиск в следующих местах:
~/Views/Drama_Natak/Schedule_Timetable.aspx
~/Views/Drama_Natak/Schedule_Timetable.ascx
~/Views/Shared/Schedule_Timetable.aspx
~/Views/Shared/Schedule_Timetable.ascx

Фактически Drama_Natak/Schedule_Timetable.aspx присутствует в Районе.

Я что-то пропустил? Пожалуйста помоги.

ответ

0

Вы должны установить значение route.DataTokens["Area"] на имя вашей области:

requestContext.RouteData.DataTokens["Area"] = requestContext.RouteData.Values["area"];