0

エリアを使ってみたかった(試しただけ)。プロジェクトにエリアを追加しましたfoo。プロジェクトを右クリックして、エリアを追加します。そのフォルダーには、コントローラー、ビュー、モデルなどを追加できるサブフォルダーが含まれています。またfooAreaRegistration.cs、エリアのルーティングが行われる cs ファイルもあります。

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.MapRoutefooAreaRegistration.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 in action) に従っている人には役立つかもしれません。

提案?

4

1 に答える 1