2013-05-23 3 views
0

Я хотел попробовать и использовать область (просто попробовать). Я добавил область foo в свой проект: щелкните правой кнопкой мыши по проекту, затем добавьте область. Эта папка содержит вспомогательные папки, в которых я могу добавить контроллеры, просмотр, модели и т. Д. Он также имеет файл cs fooAreaRegistration.cs, где выполняется маршрутизация для области.MVC4: создание области для начинающих

using System.Web.Mvc; 
namespace AreasExample.Areas.foo 
{ 
    public class fooAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "foo"; 
      } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "foo_default", 
       "foo/{controller}/{action}/{id}", 
       new {controller = "Foo", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 
} 

Global.asax уже имеет функцию регистрации площадь в приложении начать

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 

    RegisterRoutes(RouteTable.Routes); 
} 
    } 
} 

я тогда создал контроллер Foo, который уже имеет действие по умолчанию Index, после того, что я добавил представление к действию. Основываясь на context.MapRoute в fooAreaRegistration.cs, если я запустил программу и прохожу по этой ссылке http://localhost:54421/foo/Foo не должен ли он работать? Он показывает некоторую ошибку, когда я иду в свою область foo и контроллер Foo. Ошибка говорит

Server Error in '/' Application. 

    [A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to 
[B]System.Web.WebPages.Razor.Configuration.HostSection. Type A originates from 'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. Type B originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. 

Есть ли что-то я не хватает? Мне нужно что-то добавить?

Редактировать: Я не уверен, должен ли я удалить этот пост, поскольку нашел ответ, который указан как ответ ниже. Но тогда это может быть полезно для тех, кто следит за одной книгой (ASP.NET MVC4 в действии).

Предложения?

ответ

2

Возможно, это было связано с тем, что я загрузил проект книги из Интернета, у которого была более ранняя версия бритвы, и после того, как я создал область в этом проекте, она не могла отбросить ее до последней версии бритвы (я предполагаю), как предупреждение, как в визуальной студии говорит:

Warning 1 D:\Tutorial\mvc4ia-2012-06- 


     13\src4\Chapter13\AreasExample\Areas\foo\Views\Foo\Index.cshtml: ASP.NET runtime error: 
     [A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to 

     [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A originates from 
     'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, 
     PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 
     'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf385 
     6ad364e35\System.Web.WebPages.Razor.dll'. 
Type B originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf385 
    6ad364e35\System.Web.WebPages.Razor.dll'. D:\Tutorial\mvc4ia-2012-06- 
    13\src4\Chapter13\AreasExample\Areas\foo\Views\Foo\Index.cshtml AreasExample