2011-04-06 49 views
3

我創建了一個asp mvc3項目,我想有一個不同的_Layout.cshtml取決於選擇哪個控制器。這是因爲在控制器1中它具有2個按鈕,控制器2將有3個,而控制器3將有4個。每個控制器都是針對特定類型的用戶的,因此它取決於登錄。指定不同的_Layout.cshtml取決於控制器

如何將控制器及其視圖鏈接到另一個Layout.cshtml,現在有一個佈局,它位於共享文件夾下。

謝謝!

回答

11

觀應確定的佈局,而不是控制。

控制器應該確定返回的視圖。

然後在您的視圖的頂部,你可以指定佈局。 你可以添加一個if語句圍繞它基於數據

@{ 
    if(ViewBag.someValue) 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    else 
     Layout = "~/Views/Shared/_otherLayout.cshtml"; 
} 
+0

1爲一種簡單和有效的解決方案。 – Saxman 2011-04-07 01:59:41

1

在自其他一個點更改它有點過時,並與MVC 5,我知道你有沒有括號的一些問題。 如果你想使用視圖來做邏輯,那麼這裏是一個更完整的答案。

控制器

public ActionResult Index() 
{ 
    ViewBag.Admin = 1; 
    return View(); 
} 

查看

@{ 

    if (ViewBag.Admin == 1) 
    { 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 
    else 
    { 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 

} 
相關問題