2014-04-11 48 views
1

我正在處理Asp.NET MVC 3應用程序的頁面。我在一個名爲Alarm的控制器中有一個動作。該控制器被稱爲調度。由於各種原因,我需要修改此操作,以便在另一個名爲Read的控制器的視圖中顯示其結果。這個視圖被稱爲細節。顯示來自不同控制器的視圖

如何讓Alarm操作返回該視圖?我試圖

return View("Read/Details", vm); 

但顯示此錯誤消息:

視圖「讀/詳細信息」或它的主人沒有被發現或沒有視圖引擎支持搜索到的位置。搜索了以下位置:〜/ Views/Dispatch/Read/Details.aspx〜/ Views/Dispatch/Read/Details.ascx〜/ Views/Shared/Read/Details.aspx〜/ Views/Shared/Read/Details.ascx 〜/查看/調度/讀/ Details.cshtml〜/查看/調度/讀/ Details.vbhtml〜/查看/共享/讀/ Details.cshtml〜/查看/共享/讀/ Details.vbhtml

什麼是正確的方法來做到這一點?

回答

2

使用完整的路徑,而不是

return View("~/Views/Read/Details.cshtml", vm); 
0

您可以重定向到另一個控制器上的動作:

return RedirectToAction("ActionName", "ControllerName", routeValues); 

顯然用適當的值替換動作和控制器的名稱和routeValues將包含任何參數的操作需要。所以,如果你vm變量只是一個整數ID,您的代碼會是這個樣子:

return RedirectToAction("ActionName", "ControllerName", new { id = 1234 }); 

延伸閱讀: http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction(v=vs.118).aspx

+0

雖然RedirectToAction作品,它會更改URL。我想要顯示不同的視圖,但在當前的URL。 Kalyan的回答,以及另一個問題中的答案都是這樣做的。 –

+0

啊,你說得對。我會在這裏留下這個答案,以防其他人正在尋找這種行爲。 –

相關問題