1

我是 ASP.NET MVC 4 的新手,正在学习现有的 MVC 4 代码库。我试图找到处理与此提交按钮对应的表单的代码。我知道操作链接可能说明了如何处理“提交”按钮——但我在微软文档中没有看到任何将三个字符串作为操作链接的构造函数。

我很困惑,因为输入标签中没有操作字段。

我如何知道该人点击提交后会发生什么?

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data", @class = "disableSubmit" }))
{
...
<div class="buttons">
  <input type="submit" value="Upload" /> | @Html.ActionLink("Back to List", "Index", "Admin")
</div>
}

更新当我去“查看源代码”查看我看到的原始 HTML

<form action="/Lab/Upload" ...

所以这意味着它进入实验室/上传控制器?

禁用提交的 Javascript 如下所示:

// Disable submit button after click
$(function () {
    $('.disableSubmit').submit(function () {
        if ($(this).valid()) {
            $('input[type="submit"]').attr('disabled', 'disabled');
        }
    });
});
4

2 回答 2

1

如果提交按钮执行常规的表单提交,那么它将位于<form>标签或@Html.BeginFormusing 块内。

BeginForm 会将表单提交给与视图名称匹配的操作,除非传递了指定操作名称和/或控制器名称的参数。

如果它是一个表单标签,那么表单标签的action="something"属性将指示要提交到的 URL,通常是 controllerName/ActionName`,但根据设置的路由可能会有所不同。

您看到的 ActionLink 与表单或提交无关,它是一个常规链接,实际上是用户返回上一页而不是提交表单的一种方式。

提交按钮也有可能附加了javascript。不幸的是,由于 javascript 可以通过多种方式连接到按钮,因此很难找到。

编辑:根据您的更新,我强烈怀疑有支持此表单的 javascript。我想提交按钮被禁用,直到你满足一些允许它显示的条件。也许权限,也许完全填写表格,很难说。在 javascript 中搜索disableSubmit,因为我怀疑某处存在在某些条件下删除该类的代码。

编辑2:发生了什么是它在第一次单击后禁用提交按钮,这样您就不会意外提交两次并导致重复提交问题(如果这是创建表单,它会避免重复记录)。据我所知,应该有一个与它提交的 *.cshtml 文件同名的操作。可能在操作上带有 [Post] 或 [HttpPost] 属性。

于 2013-06-18T16:57:47.687 回答
1

检查提交按钮是否在表单标签内。如果是,那的动作属性值是什么?那是表单将被提交到的地方。

Html.Beginform您可能会看到在视图中调用的 HTML 帮助器方法。此方法呈现一个表单标签。你可以去页面查看页面的视图源码,看看form标签是什么样子的,actionmethod属性值是什么。

通常,您的控制器将有一个标有HttpPost属性的操作方法来处理表单提交。假设你的标记是这样的

<form action="User/EditUser">
   <input type="text" name=Name" />
   <input type="submit" />
</form>

现在在您的UserController中,可能有这样的操作方法

[HttpPost]
public ActionResult EditUser(SomeModelIfExist model)
{
  // TO DO : save and redirect
}

辅助方法呈现Html.ActionLink一个锚标记。它与表单提交无关。因此,您的操作链接助手将返回以下标记

<a href="Admin/Index">Back</a>
于 2013-06-18T16:54:39.137 回答