2011-11-02 133 views
1

在視圖上提交頁面時,我需要調用Controller中的方法。 我不知道如何做到這一點。如果你能提供一個關於如何調用控制器的小例子,那將是值得讚賞的。MVC - 需要在視圖中調用控制器中的方法

+1

這不會破壞MVC的最重要的方面,即*職責分離*嗎?視圖不一定知道哪個控制器正在調用,它只是傳遞一個模型來渲染。解釋最終目標是什麼可能會更好。聽起來像一個XY情況http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378。 –

回答

1

編輯:不知道你用什麼框架來開發你的應用程序,但這裏是一個使用ASP.NET MVC的例子。

聽起來好像您想知道如何使用Controller中定義的Action方法來處理從View提交的表單的處理。這個例子使用Razor視圖引擎。在您看來,您可以使用BeginForm helper方法創建出象這樣的形式:

@using (Html.BeginForm("Action", "Controller", FormMethod.Post)) { 
    @* form elements go here *@ 
} 

其中字符串「行動」「控制器」分別是你的操作方法和控制器的名稱。

記下呈現的HTML包含在form標籤的action屬性的/控制器/動作路線:

<form action="/Controller/Action" method="post"> 
</form> 

還要注意的是,你不必使用輔助方法,你可以只需使用上面的HTML創建自己的表單。

0

例如 - Ruby on Rails的:

假設你有一個表/模型 '建築'

您將有一個Building模型(注 - 單數)。

您將有一個BuildingsController類(在定義該控制器的文件中)。

此控制器將有多種方法(其中包括許多其他用途)可以從窗體調用爲動作,即作爲您的建築視圖的視圖。

Rails中的表單代碼是form_for :building,它構建了適當的html表單標記,其操作將指向也使用模型中信息的控制器方法。

當表單被提交時,它知道基於動作的哪個控制器方法。處理後,例如保存到數據庫,然後控制器將負責確定要顯示的視圖(例如錯誤頁面,建築物頁面列表等)

正如您在rails中所看到的,建築物,建築物和建築物的標準用法是一旦你瞭解這些慣例,就很方便。

相關問題