1
的問題,用戶可以選擇六個環節之一,像這樣 ASP.NET核心頁面佈局多個工具欄菜單
後,他選擇特定的鏈接,例如鏈接1,他應該被重定向到主頁與工具欄菜單看起來像這樣:
如果他選擇例如鏈接2他的菜單應該是這樣的:
無論如何,我不知道如何實現這一點,因爲我的菜單位於_Layout.cshtml裏面,View Component功能可以幫助我解決這個問題嗎?
的問題,用戶可以選擇六個環節之一,像這樣 ASP.NET核心頁面佈局多個工具欄菜單
後,他選擇特定的鏈接,例如鏈接1,他應該被重定向到主頁與工具欄菜單看起來像這樣:
如果他選擇例如鏈接2他的菜單應該是這樣的:
無論如何,我不知道如何實現這一點,因爲我的菜單位於_Layout.cshtml裏面,View Component功能可以幫助我解決這個問題嗎?
我使用viewComponent功能自己找到解決方案。
首先我不得不重新配置內部Startup.cs我的缺省路由的,看起來像這樣:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "defaultLink",
template: "{link='Link1'}/{controller=Home}/{action=Index}/{id?}");
});
裏面的佈局我調用viewComponent這樣後:
// invoke viewComponent in layout and pass url parameter to it
@Component.Invoke("SidebarMenu", ViewContext.RouteData.Values["link"])
和我viewComponent方法看起來像:
public IViewComponentResult Invoke(string link)
{
switch (link)
{
case "Link1":
return View("_Link1Menu");
case "Link2":
return View("_Link2Menu");
default:
return View("_Link1Menu");
}
}
_Link1Menu視圖看起來像這樣:
<li>
<ul class="sub-menu">
<li>
<a href="/Link1/Home/SomeMethod">
Test1MenuLink1
</a>
</li>
<li>
<a href="/Link1/Home/SomeOtherMethod">
Test1MenuLink2
</a>
</li>
</ul>
</li>
和_Link2Menu觀點是這樣的:
<li>
<ul class="sub-menu">
<li>
<a href="/Link1/Home/SomeMethod">
Test2MenuLink1
</a>
</li>
<li>
<a href="/Link1/Home/SomeOtherMethod">
Test2MenuLink2
</a>
</li>
</ul>
</li>
在此之後,當u命中URL /鏈接1 /首頁/索引 - 從日子會把你觀點_Link1Menu拿到菜單,並且當u命中URL/Link2/Home/Index - 您將從_Link2Menu視圖獲取菜單...