2009-02-10 74 views
3

視圖中的文件夾可以包含子文件夾嗎?如果是這樣,主計長如何接觸他們?例如...我想有以下網址的正常工作:ASP.Net MVC視圖體系結構

  • 管理員/指標
  • 管理員/資料/指數
  • 管理員/資料/編輯/ 1
  • 管理員/組/指數
  • 管理員/組/編輯/ 1

所以,我會創建一個配置文件和集團內部管理的子文件夾的文件夾?

我試過了,並且在全局文件中映射了一個路由,但似乎沒有工作。

回答

4

好像您正在嘗試創建管理面板並將其他控制器相關操作放入管理控制器中。我相信這不是最有效的方法。你可以簡單地這樣做:

使用RedirectToAction作爲回報,如果需要的管理鏈接

  • 管理員/指標
  • 管理/檔案
  • 管理員/組

並把其餘的到適當的控制器

  • 資料/指數
  • 資料/編輯/ 1
  • 集團/索引
  • 組/編輯/ 1

同時添加[Authorize(Roles = "Administrator")][AcceptVerbs(HttpVerbs.Post)]用於創建/修改/刪除操作

3

只是要返回動作是這樣的:

return View("Profile/Index"); 

,這將使伎倆控制器找到「子視圖」。爲了將URL映射到正確的控制器,您可以使用路由系統,但忽略子視圖,只需映射到正確的控制器並讓控制器處理正確的視圖。

+0

這其實是一個很好的答案.. + 1 :) – Ropstah 2010-03-24 21:51:20

1

還有另一種選項,使用區域的概念,以實現全球分組的觀點和控制器,如在這個有趣的比利麥克福特的文章中所描述的:

Creating MVC "Areas" as Subfolders under Views

代碼可用,因此你可以看看一切是怎麼做的,但基本上與另一個,類似於原來的,但與不同的管理視圖位置的替換視圖引擎,並根據定義的區域註冊的路線。

3

你可以創建自己的視圖引擎,並覆蓋到哪裏尋找這些文件是這樣的

public class MyViewEngine : WebFormViewEngine 
{ 
    public MyViewEngine() 
    { 
     ViewLocationFormats = new[] { 
      "~/{0}.aspx", 
      "~/{0}.ascx", 
      "~/Views/{1}/{0}.aspx", 
      "~/Views/{1}/{0}.ascx", 
      "~/Views/Shared/{0}.aspx", 
      "~/Views/Shared/{0}.ascx", 
     }; 

     MasterLocationFormats = new[] { 
      "~/{0}.master", 
      "~/Shared/{0}.master", 
      "~/Views/{1}/{0}.master", 
      "~/Views/Shared/{0}.master", 
     }; 
     PartialViewLocationFormats = ViewLocationFormats; 

    } 
} 

然後在你的應用程序啓動加

ViewEngines.Engines.Add(new MyViewEngine()); 
+0

這是很好的信息...當我有更多的時間,我絕對想看看這個。 – 2009-02-12 18:08:20