2012-10-16 48 views
-1

我有一個MVC 3應用具有默認視圖和第二視圖,我將稱之爲SecondView。 SecondView具有相應的控制器SecondViewController。MVC佈局未找到

SecondViewController.cs包含兩個步驟:Index()LoadSecondView(id),都返回View("SecondView")

SecondView.cshtml包括:

@{ 
    ViewBag.Title = "SecondView"; 
    Layout = "~/Views/_MasterLayout.cshtml"; 
} 

<h2>Second View</h2> 

如果我的主要index.cshtml調用window.open( 「SecondView」),則預期在頁面加載,使用的佈局是在查看/ _MasterLayout。 CSHTML。但是,如果它調用window.open(「SecondView/LoadSecondView/id-parameter-string」),則_MasterLayout認爲「當前目錄」是/ SecondView/LoadSecondView而不是/,並且所有指向例如)圖像現在指向錯誤的地方,所以整個佈局被忽略。 (同樣的事情發生,如果LoadSecondView沒有采取任何參數,並且調用URL只是「SecondView/LoadSecondView」)。

有沒有一種方法來調用一個過程(而不是索引)然後加載一個視圖,在正確的位置查看佈局?

+1

所以你的問題實際上不是對MVC佈局不被發現,但你的資源路徑是不正確的? –

+0

那麼,當你這樣說的話......實際上,當你這樣說的話,我想我解決了這個問題 - 當我把一個「/」在佈局文件中的每個網址的前面,似乎工作現在。 –

+0

另外,有你使用像[一瞥]工具(http://www.hanselman.com/blog/NuGetPackageOfTheWeek5DebuggingASPNETMVCApplicationsWithGlimpse.aspx)排查考慮? – neontapir

回答

0

看來你的問題是關於相對和絕對路徑..

http://en.wikipedia.org/wiki/Path_%28computing%29

您使用相對路徑,這意味着相對於當前目錄。

使用/path強制的路徑,開始從根本上解決。這就是所謂的,無論你開始的地方總是指向同一位置意義上的絕對路徑..