【问题标题】: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 中看到的建筑的标准用法,一旦您了解了惯例,建筑和建筑就非常方便。

    【讨论】:

      猜你喜欢
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      相关资源
      最近更新 更多