2013-07-05 39 views
0

我有以下文件夾結構的mvc操作鏈接重定向到視圖文件夾中的文件夾

->People 
-->Views 
--->Reports 
--->index.cshtml 
---->PhoneCalls 
----->Report.cshtml 
-->Controlers 
--->ReportsControler.cs 

如何從index.cshtml導航使用@html.ActionLink幫手Report.cshtml

我已經試過

@Html.ActionLink("Report", "PhoneCalls/Report", null, new { target = "__blank" }); 

與失敗。

+2

ActionLinks不鏈接到視圖,它們鏈接到控制器操作。什麼控制器操作返回視圖「PhoneCalls/Report」? – Brandon

+0

已更新有問題的文件夾結構以包含控制器文件夾,並且控制器操作是ReportController.cs中的Report –

回答

3

我還是不太清楚您的設置是什麼,但對於鏈接到包含在Views文件夾的子文件夾視圖的一般情況。

鏈接到你的控制器動作處理該視圖,而不是視圖本身

@Html.ActionLink("Report", "Report", "Reports", null, new { target = "_blank" }); 

第一個參數是隻是鏈接文本,隨後的動作,則控制器(不是視圖),沒有路由參數,和你的HTML屬性。

Reports控制器的Report操作將查找Views/Reports/Report.cshtml文件。由於這不存在,你可以在一個字符串參數傳遞給View()方法來指定你實際使用它觀看。

public ActionResult Report() 
{ 
    // Do your controller work 

    return View("PhoneCalls/Report"); 
} 
+0

這會起作用,但是您正在對使用的ViewEngine進行假設。我會建議把「共享」視圖放在共享文件夾中。 –

+0

@KhalidAbuhakmeh,在這個問題他用剃刀語法與.cshtml文件,所以我不知道這是一個假設。除非你的意思是別的嗎? – Brandon

+1

是的,人們可以清除ASP.Net MVC中的默認ViewEngines並具有不同的搜索結構。添加「/」的唯一原因是因爲默認視圖引擎使用字符串連接。所以這個答案取決於默認的視圖引擎。這仍然是一個很好的答案,只是不會在任何情況下工作,特別是對人們越來越看中:)。 –

相關問題