jquery - MVC 表单上的两个或多个操作按钮 - 最佳实践

标签 jquery asp.net-mvc

我有一个带有表单的 ASP.NET MVC 应用程序。假设这个表单有任意数量的按钮,每个按钮都有自己的操作。

<input type="button" id="action1" value="One" />
<input type="button" id="action2" value="Two" />
... and so forth

我们希望用户单击其中一个并触发 jQuery 操作来提交表单,然后使用新信息重新发布表单

有多种方法可以实现这一点。 优雅设计的最佳实践是什么?如果可以的话,请提供代码片段。

最佳答案

很少提到的方法是使用 ActionMethodSelectorAttribute:

http://weblogs.asp.net/dfindley/archive/2009/05/31/asp-net-mvc-multiple-buttons-in-the-same-form.aspx

简而言之,它的工作方式很像 AcceptVerbs 属性 - 只是它通过提交值选择方法,而不是通过 HTTP 方法。它还可以用于许多其他事情,例如,为 AJAX/HTTP 请求等选择不同的操作、请求的格式(JSON/XML/等)等等。

使用哪种方法 - 开关、属性等 - 取决于具体情况。我不会说这里有最佳实践。

仅列出我所知道的方法:

  1. switch (/操作参数/提交) {} - 也可以使用反射,尽管可以使用像这样的反射。GetType().GetMethod(submit).Invoke(this, new object[]{ Action 数据})。
  2. javascript:输入 onclick="$(this).parents("form").attr("action", "specified url").submit() - 如果没有 JavaScript,则无法工作
  3. ActionMethodSelectorAttribute - 过于声明性。

我很高兴看到更好的方法,例如,操作上的 [SubmitName("submit1")] 属性,以及 OnActionExecuting() 检查它并覆盖被调用的操作...但我不知道它是怎么回事有可能。

关于jquery - MVC 表单上的两个或多个操作按钮 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589174/

相关文章:

javascript - show() 一个用 children() 隐藏的 div(拖放)

javascript - Jquery点击函数,同一个按钮显示不同的文字

javascript - 增加/减少滚动上的元素填充

javascript - 每次 GET 调用后,URL 都有 ?_=*Number* 吗?

javascript - Div在asp.net中显示无/隐藏javascript函数

javascript - 使用 jQuery 定位特定类

javascript - 单击重置按钮时重置选择框同位素组合

asp.net-mvc - EF 5 - 模型优先,如何在不删除数据库的情况下更新数据库架构

jquery - 如何安装 JQuery UI 1.8.3 和 JQuery 1.5.1

asp.net - 服务器向 Web 客户端发送消息的最佳方式是什么?