2015-02-09 76 views
0

我想在ASP.NET MVC應用程序的默認視圖文件夾中創建子文件夾。我使用MVC 4.0MVC中沒有區域的控制器的子文件夾

查看/設備/自動/ Index.aspx的

查看/設備/自動/ Edit.aspx

查看/設備/半自動/ Index.aspx的

意見/Device/SemiAuto/Edit.aspx

查看/設備/手動/ Index.aspx的

查看/設備/手動/ Edit.aspx

我有DeviceContoller和我的網址應該是

http://.../Device/Auto/Index

http://.../Device/Auto/Edit

等了半自動和手動裝置。我不希望爲此使用區域。我不知道如何指定我的動作方法和路線。 任何幫助將不勝感激。

+0

對此的任何解釋 – TJP 2015-02-09 18:24:35

回答

0

在MVC中,URL轉到的地方根本不是基於視圖文件的組織。這是因爲瀏覽器請求不會直接打開視圖。您可能會將其視爲「.aspx」文件,其中瀏覽器直接跟蹤路徑和文件名。但MVC並非如此。在MVC中,您可以配置一組指定URL模式的路由,併爲每個模式指定它在控制器上映射的功能。從該函數內部指定將使用哪個視圖文件。它也在這裏,你構建並通過支持模型。 MVC(模型 - 視圖 - 控制器)從這些運動部件獲得它的名字。

這聽起來像你會很好地找到一個很好的MVC介紹,並從基礎開始。這樣,您就可以瞭解系統如何相互作用,並據此計劃如何構建應用程序。你想要做的一切都可以完成,但你必須瞭解運動部件是什麼以及它們如何相互作用。

0

默認查看引擎不支持默認搜索位置中的子文件夾。您可以創建自己的視圖引擎,以添加有關MVC如何根據控制器/操作或某個自定義屬性確定如何返回正確視圖的規則。如果你走這條路線,你可以搜索RazorViewEngine

但最簡單的是告訴MVC哪裏可以找到視圖。假設您將「About.cshtml」移動到名爲「子目錄」的子目錄中。你可以像這樣渲染它:

public ActionResult About() 
{ 
    return View("~/Views/Home/SubDirectory/About.cshtml"); 
} 
+0

感謝您的回覆。我已經使用第二種方法返回視圖,但我不希望這樣實現它。我只想爲MVC使用標準方法,如'return View();'通過我的模型使其更容易維護。如果您可以建議我如何在我的DeviceController中爲其註冊新路線和操作方法,那麼它對我來說是完美的。再次感謝。 – TJP 2015-02-10 15:54:46

+0

如何確定在控制器/操作中呈現「自動」,「半自動」和「手動」的視圖?基於這個答案,我可能會指出如何創建自定義RazorViewEngine以支持您的佈局。由於MVC需要一種方式來理解你與這些子目錄的關係以及何時/如何/爲什麼要使用它們,所以不可能將默認的RazorViewEngine用於子目錄。 – 2015-02-10 17:47:00

+0

我不介意創建自定義的RazorViewEngine,如果它的快速和容易。我希望避免複雜的情況來實現它。我想知道如果它可能指定視圖名稱作爲操作方法參數。例如:Auto(string viewName =「Index」);然後我可以通過在我的Url中傳遞viewname來調用它,如「http://.../Device/Auto/Index」或「http://.../Device/Auto/Edit」。在方法內部,我可以通過檢查視圖名稱並返回視圖來初始化我的模型。 – TJP 2015-02-12 17:58:59

相關問題