【问题标题】:MVC - Need to call a method in Controller from ViewMVC - 需要从视图调用控制器中的方法
【发布时间】:2011-11-02 21:26:28
【问题描述】:
在视图上提交页面时,我需要调用控制器中的方法。
我不知道该怎么做。如果您能提供一个关于如何调用控制器的小示例,将不胜感激。
【问题讨论】:
标签:
model-view-controller
view
controller
【解决方案1】:
编辑:不确定您使用什么框架来开发您的应用程序,但这里有一个使用 ASP.NET MVC 的示例。
听起来您想知道如何使用控制器中定义的 Action 方法来处理从 View 提交的表单的处理。此示例使用 Razor 视图引擎。在您看来,您可以使用 BeginForm 辅助方法创建表单,如下所示:
@using (Html.BeginForm("Action", "Controller", FormMethod.Post)) {
@* form elements go here *@
}
其中字符串 "Action" 和 "Controller" 分别是您的操作方法和控制器的名称。
请注意,呈现的 HTML 在表单标签的 action 属性中包含 /controller/action 路由:
<form action="/Controller/Action" method="post">
</form>
另外请注意,您不必使用辅助方法,您可以使用上面的 HTML 创建自己的表单。
【解决方案2】:
例如 - Ruby on Rails:
假设您有一个表格/模型“建筑物”
您将拥有一个 Building 模型(注意 - 单数)。
您将拥有一个 BuildingsController 类(在定义该控制器的文件中)。
此控制器将具有多种方法(在许多其他用途中)可以作为表单中的操作调用,即作为您的建筑视图的视图。
rails 中的表单代码是form_for :building,它构建了适当的 html 表单标签,其动作将指向控制器方法,该控制器方法也使用来自模型的信息。
当表单被提交时,它会根据操作知道要转到哪个控制器方法,并且。处理后,例如保存到数据库后,控制器还将负责确定显示哪个视图(例如错误页面、建筑物列表页面等)
正如您在 Rails 中看到的建筑的标准用法,一旦您了解了惯例,建筑和建筑就非常方便。