在 .NetCore 也有Area可以使用,使用方式與 .NetFramerwork 頗類似,不過也有些差異
建立一個 Area 的 Controller
[Area("My")]
public class UserController : Controller
{
public IActionResult Index()
{
return View();
}
}
建立對應的 View
@{
ViewBag.Title = "title";
}
<h2>My-User-Index</h2>
調整Startup上的路由
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(name: "My", areaName:"My",
pattern: "My/{controller}/{action}");
endpoints.MapControllerRoute(name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
我在 _Layout 加上一條 該頁面的link
<li class="nav-item">
<a class="nav-link text-dark" asp-area="My" asp-controller="User" asp-action="Index">My</a>
</li>
Run 起來後會發現Area的View沒有吃到_Layout,這邊有幾種做法
-
把 _ViewImports.cshtml 和 _ViewStart.cshtml 直接拉到專案的根目錄
-
為 Area 建立獨立的設定和 _Layout.cshtml
-
讓 Area 取得外層的 Views/Shared/_Layout.cshtml
- 跟第二種只差在有沒有獨立的 _Layout.cshtml
在 .NetCore 也有Area可以使用,使用方式與 .NetFramerwork 頗類似,不過也有些差異
建立一個 Area 的 Controller
[Area("My")] public class UserController : Controller { public IActionResult Index() { return View(); } }
建立對應的 View
調整Startup上的路由
app.UseEndpoints(endpoints => { endpoints.MapAreaControllerRoute(name: "My", areaName:"My", pattern: "My/{controller}/{action}"); endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
我在 _Layout 加上一條 該頁面的link
<li class="nav-item"> <a class="nav-link text-dark" asp-area="My" asp-controller="User" asp-action="Index">My</a> </li>
Run 起來後會發現Area的View沒有吃到_Layout,這邊有幾種做法
把 _ViewImports.cshtml 和 _ViewStart.cshtml 直接拉到專案的根目錄
為 Area 建立獨立的設定和 _Layout.cshtml
讓 Area 取得外層的 Views/Shared/_Layout.cshtml