我在控制器中有一個方法返回一個字符串。在控制器中調用asp.net MVC2視圖中的公共方法
我需要從我的視圖調用此方法來獲取字符串並在視圖中顯示。
我正在使用MVC2。我如何從視圖調用控制器中的公共方法?
我在控制器中有一個方法返回一個字符串。在控制器中調用asp.net MVC2視圖中的公共方法
我需要從我的視圖調用此方法來獲取字符串並在視圖中顯示。
我正在使用MVC2。我如何從視圖調用控制器中的公共方法?
你真的不應該從視圖中調用控制器中的方法,這是從MVC模式向後。控制器調用視圖。您可以在調用它時將數據傳遞給控制器的視圖,也可以是屬於視圖可以使用的幫助器類中的方法。
編輯:Good starter tutorial傭工如果你不熟悉。
鸚鵡是正確的,你不應該從一個視圖訪問控制器(如他所說的使用傭工),但如果你必須:
<%= ((MyController)this.ViewContext.Controller).SomeMethod() %>
如果您需要調用的東西(其中查看不該」做T,但是......),你可以提供查看了回調,而不是在視圖中引用的控制器:
ViewData["callback"] = new Func<string>(() => "string");
// or for strongly typed views
Model.Callback = new Func<string>(() => "string");
鑑於
<%= ((Func<string>)ViewData["callback"])() %>
<%= Model.Callback() %>
但是你真的最好不要這樣做。
如果你想在你的頁面注入一些文本,你可以在控制器上調用一個動作。您可以使用Html.RenderAction(<操作名稱>,<控制器名稱>)。這會在您的視圖中刪除字符串。
這是從不同控制器填充視圖各部分的簡單方法。
另外,是否有一個原因,你不能從產生視圖的操作中調用該方法,並將其放入ViewData/ViewBag中?您可以在視圖中訪問它。
正是我需要的 – KingOfHypocrites 2015-01-26 22:06:50
有時需要從視圖中調用控制器的方法,例如,查看DevExpress gridview狀態管理機制here。爲此
(ViewContext.Controller as MyController).SomeMethod();
是一個很好的解決方案。
Upvoted。控制器收集數據並將它們傳遞給視圖。視圖不會呼叫控制器。 – 2010-01-14 15:21:04
寫一個幫手方法對我有用 – Prasad 2010-01-14 18:28:16