我有一个带有表单的 ASP.NET MVC 应用程序。假设这个表单有任意数量的按钮,每个按钮都有自己的操作。
<input type="button" id="action1" value="One" />
<input type="button" id="action2" value="Two" />
... and so forth
我们希望用户单击其中一个并触发 jQuery 操作来提交表单,然后使用新信息重新发布表单。
有多种方法可以实现这一点。 优雅设计的最佳实践是什么?如果可以的话,请提供代码片段。
最佳答案
很少提到的方法是使用 ActionMethodSelectorAttribute:
简而言之,它的工作方式很像 AcceptVerbs 属性 - 只是它通过提交值选择方法,而不是通过 HTTP 方法。它还可以用于许多其他事情,例如,为 AJAX/HTTP 请求等选择不同的操作、请求的格式(JSON/XML/等)等等。
使用哪种方法 - 开关、属性等 - 取决于具体情况。我不会说这里有最佳实践。
仅列出我所知道的方法:
- switch (/操作参数/提交) {} - 也可以使用反射,尽管可以使用像这样的反射。GetType().GetMethod(submit).Invoke(this, new object[]{ Action 数据})。
- javascript:输入 onclick="$(this).parents("form").attr("action", "specified url").submit() - 如果没有 JavaScript,则无法工作
- ActionMethodSelectorAttribute - 过于声明性。
我很高兴看到更好的方法,例如,操作上的 [SubmitName("submit1")] 属性,以及 OnActionExecuting() 检查它并覆盖被调用的操作...但我不知道它是怎么回事有可能。
关于jquery - MVC 表单上的两个或多个操作按钮 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589174/