在控制器中,是否可以從另一個控制器返回動作視圖?另一種選擇是返回一個局部視圖,它使用Html.Action(...)從另一個控制器返回視圖,但我想知道是否有更清潔的東西。謝謝。MVC2 - 可以從不同的控制器調用操作?
回答
最後我用我原來的解決方案,它是具有共同看法是調用一個動作。它比我所需的代碼少得多。謝謝。
是的,如果該視圖是共享視圖。將視圖放置在MVC項目的Views/Shared
文件夾中,然後這兩個控制器將能夠返回它。
雖然這是真的,但如果你想加載一個技術上指定給不同Controller的View,那麼@ Marnix的答案是正確的。 –
如果它只是您想要重用的視圖,則可以將路徑傳遞給視圖。例如:
public ActionResult MyAction()
{
// do your model magic here
return View("~/Views/OtherController/View.aspx", model);
}
或者你也可以像凱爾已經提出的觀點移到Views/Shared
。
這裏有一個策略,我用它來調用另一個動作,而無需只爲這一目的創建一個特殊的視圖:
創建共享視圖這需要定義一個動作,控制器和RouteValues,以及其唯一的模型責任是用該模型上的值調用RenderAction。
接下來,在基本控制器類上創建一個幫助器方法,該方法將Action,Controller和RouteValues作爲參數,並返回此共享視圖的ViewResult。這樣,您可以隨時在所有控制器上重複使用此幫助程序方法和共享視圖,以便隨時從其他操作的上下文中渲染其他操作。
當然,如果它只是視圖而不是你想調用的動作,Marnix的回答是正確的。
-1對於沒有解釋的人來說不會幫助任何人。 – StriplingWarrior
這種感覺真的很笨拙。使用視圖來影響哪些控制器運行感覺就像是在篡改MVC模型。 –
@Simon Halsey:我想可能會認爲'RenderAction'的整個想法正在破壞MVC模型。不過,這有助於防止大量重複的代碼。利用'RenderAction'方法使一個控制器更容易調用另一個控制器上的子操作,同樣可以幫助重複使用代碼。不過,我很欣賞這些反饋。如果你發現一種不太笨拙的方式,我希望你會與我們分享。 – StriplingWarrior
如果您想調用另一個控制器上的操作,可以使用Controller.RedirectToAction()並傳入操作和控制器名稱。
但是,這增加了額外的服務器往返行程。如果你想避免這種情況,你可以使用這裏顯示的TransferResult類:
- 1. 從另一個控制器調用不同的操作方法
- 2. .net MVC2 jQuery不能從控制器調用動作
- 3. 從TagHelper調用控制器操作
- 4. 如何從控制器操作中調用另一個控制器操作?
- 5. Mvc3 C# - 是否可以從不同的控制器調用動作?
- 6. 如何重定向到ASP.NET MVC2中不同控制器中的操作?
- 7. 從另一個控制器操作中調用AsyncController操作?
- 8. 角度控制器從不同的模塊控制器調用
- 9. 從控制器的視圖調用不同的控制器動作雖然javascript
- 10. ZEND控制器 - 如何從不同的控制器調用動作
- 11. 直接從不同的控制器調用ASP.NET控制器動作
- 12. 從視圖調用控制器操作...或不?
- 13. 從組件中的操作調用控制器動作
- 14. 在asp.net中調用相同的控制器操作mvc
- 15. Ajax調用不調用控制器操作方法
- 16. 如何從視圖中呈現不同控制器的操作?
- 17. Rails SImple從發佈到不同的控制器創建操作
- 18. 顛覆控制服務器可以通過不同的操作系統訪問?
- 19. 我可以從global.asax重定向到控制器操作嗎?
- 20. 控制器操作可以用於常規的web請求和ajax調用嗎?
- 21. Ajax調用C#控制器操作不起作用
- 22. 如何從其他操作中調用駐留在不同控制器中的操作
- 23. 笨 - 從不同的控制器動作
- 24. 如何判斷我的控制器操作是否正從另一個控制器操作中調用?
- 25. 如何在同一個控制器中調用其他操作?
- 26. 從視圖中的鏈接調用MVC控制器操作
- 27. 從Ember.JS中的控制器方法調用操作方法
- 28. 如何從umbracoo調用控制器的操作方法
- 29. 從Webforms類代碼隱藏調用MVC2行動控制器
- 30. 兩條路線可以在SailsJs中使用相同的控制器操作嗎?
你的問題的標題和正文不同意。你是在詢問關於調用另一個控制器的* action *或者僅僅是爲另一個控制器構建的* view *嗎? – StriplingWarrior