ビューのカスタムパスを設定する方法について説明する記事を読んでいます。ルートテンプレートに「:exists」は何をしますか?
http://www.c-sharpcorner.com/article/expanding-razor-view-location-and-sub-areas-in-asp-net-core/
ルーティングコードの設定は明確ではありませんでした。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "subAreaRoute",
template: "{area:exists}/{subarea:exists}/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
これはどうしますか:{area:exists}
?それは何をチェックしていますか?
我々は{エリア:存在する}を使用していないならば、ルーティングが動作しませんか? –
これはうまくいきますが、 '/ SomeArea/Home/Index'などのURLを受け取った場合、まず最初のルートを試してみるというのがポイントです。最初に、 'area = SomeArea'を使ってアクションがあるかチェックします。次に、 'subarea = Home'をチェックします。この時点では、そのようなアクションは存在しないと考えられるので、マッチを拒否します。それから、次のテンプレートが試されます(典型的な設定では一致します)。もちろん、エリアSomeAreaが存在しない場合は、最後のルートテンプレートを試します。実際には、controller = SomeArea、action = Home、id = Indexと考えることになります。そのような行動を見つけられない= 404。 – juunas