エリアを使ってみたかった(試しただけ)。プロジェクトにエリアを追加しました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.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 in action) に従っている人には役立つかもしれません。
提案?