開始ページを/ Members/Indexに設定したかったのです。
MVCを使用していたとき、次のように構成しました。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Members}/{action=Index}/{id?}");
});
しかし今、私は新しいRazor Pagesアプローチを試しています。そして今、Membersはフォルダーで、IndexはRazorPageです。フォルダ内のこのページを開始ページとして設定するにはどうすればよいですか?
ルートディレクトリにインデックスページを追加してそこにリダイレクトすることはできますが、もっとクリーンなものを探していました。
ASP.NET Core 2.1で始まる「開始」ページを指定する最も簡単な方法は、cshtmlファイルで@page
ディレクティブを使用することです。この機能は このブログ投稿 で説明されており、ディレクティブの公式ドキュメントは Razorページ構文のこのセクション です。
たとえば、ルートを「/」として指定すると、このページがデフォルトのページになります。
@page "/"
@model sample.Pages.startModel
@{
ViewData["Title"] = "Start Page";
}
<h2>Start Here!</h2>
...
Startup.csのConfigurationServices関数に以下を追加します
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Members/Index", "");
});
別のインデックスページがある場合は、おそらくそれを削除するか、名前を変更する必要があります。
私はこのように使用しています
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.AllowAreas = true;
options.Conventions.AddAreaPageRoute("Home", "/Index", "");
});
私のフォルダ構造は次のとおりです。
-エリア | _ホーム | _ページ | _ Index.cshtml | _ //その他のエリア
AppStart->RouteConfig.cs
で次のコードを試してください。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Members", action = "Index"}
);