MVC - 需要从视图调用控制器中的方法
Posted
技术标签:
【中文标题】MVC - 需要从视图调用控制器中的方法【英文标题】:MVC - Need to call a method in Controller from View 【发布时间】:2011-11-02 21:26:28 【问题描述】:在视图上提交页面时,我需要调用控制器中的方法。 我不知道该怎么做。如果您能提供一个关于如何调用控制器的小示例,将不胜感激。
【问题讨论】:
这不会破坏MVC 最重要的方面,即职责分离吗?视图不一定知道调用的是哪个控制器,它只是传递了一个模型来渲染。最好解释一下最终目标是什么。听起来像是 XY 情况meta.stackexchange.com/questions/66377/what-is-the-xy-problem/…。 【参考方案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 中看到的建筑的标准用法,一旦您了解了惯例,建筑和建筑就非常方便。
【讨论】:
以上是关于MVC - 需要从视图调用控制器中的方法的主要内容,如果未能解决你的问题,请参考以下文章
需要从 MVC 5 中的控制器操作关闭 Jquery UI 对话框
使用 mvc 视图中的参数从 jquery 调用 web api