2015-05-24 31 views
0

我有一個視圖,我將其稱爲ControllerA,從中我想要href /鏈接到另一個控制器(ControllerB)中的視圖並讓該視圖(ViewB)出現另一個瀏覽器標籤我試圖明顯方法..MVC - 連接到另一個控制器/動作的故障

從ViewA ..

<a href="/ControllerB/ActionB" target="_blank">SomeText</a> 

ActionB確實通常返回查看();

的問題是,當我點擊鏈接,一個新的選項卡打開,但我得到這個錯誤..

的資源不能被發現。 描述:HTTP 404.您正在查找的資源(或其某個依賴項)可能已被刪除,名稱已更改或暫時不可用。請檢查以下網址並確保它拼寫正確。

請求的URL:/ ControllerB/ActionB

不明白這一點。我可以100%保證該控制器存在於項目的Controllers/ControllerB目錄中。

是的,我也嘗試這個以及..

<a href="@Url.Action("ActionB", "ControllerB")" target="_blank">SomeText</a> 

,但同樣的問題。

雖然(雖然)在ViewA中設置href以調用jscript函數(href =「javascript:function()」),但是做了什麼?該函數使用jquery ajax調用跳轉到ControllerB(使用與上面相同的url),並且這實際上起作用(它停止在調試器中的返回View()上)。問題是,沒有其他事情發生。沒有新標籤打開並且視圖不會出現在任何地方。

我該怎麼做/我做錯了什麼?

編輯:也具有相同的結果試過這種..

@Html.ActionLink("SignalR", "SRStart", "SignalR", null, new { target = "_blank" }) 

事做也許路由?

編輯#2: 我以前見過這個版本的錯誤。這取決於我如何設置網址,我會得到一個更詳細的404錯誤的詳細信息,其中包括這個..

請求的URL的http://本地主機:64528 /首頁/〜/ SignalR/SRStart

注意到主控制器(或目錄 - 不確定)被默認添加到url的前面,我指定哪個是導致錯誤的原因。不知道爲什麼會發生這種情況,除了包含鏈接的視圖不在Home控制器(ControllerA)中,而是發生了這種情況,並且這是一個令人痛苦的事情。 所以我想現在的問題是 - 我如何防止當前的控制器(家庭)被追加到URL的前面?某些應用程序設置在某處?

+0

可能是顯而易見的,但是你是否在Controller的後面加上'Controller'? eg公共類ControllerBController:控制器{ –

+0

是的,我做到了。要更清楚一點,ControllerB的實際名稱是SignalRController,動作是SRStart。我在ActionLink中使用了'/ SignalR/SRStart',我相信這是正確的。 – gmes29

+0

你可以發佈你的控制器代碼嗎? –

回答

1

這很有趣。當我發佈我的操作方法時,我剛剛將[HttpPost]中的屬性更改爲[HttpGet],並不認爲它會因爲路徑問題而產生任何影響,但隨後我再次運行它,並且它工作正常。不會假裝我明白爲什麼主頁被追加到URL當我有Post作爲屬性,但猜測它並不重要。所以這是屬於操作方法的屬性。有趣。 thanx all ..

相關問題