ASP.NET MVC Core / 6:多个提交按钮
我需要多个提交按钮来在控制器中执行不同的操作。
我在这里看到了一个优雅的解决方案: 如何在ASP.NET MVC框架中处理多个提交按钮? 使用此解决方案,可以使用自定义属性修饰操作方法。 处理路径时,此自定义属性的方法检查属性的属性是否与单击的提交按钮的名称匹配。
但是在MVC Core(RC2每晚构建)中我还没有找到ActionNameSelectorAttribute
(我还搜索了Github存储库)。 我找到了一个类似的解决方案,它使用ActionMethodSelectorAttribute
( http://www.dotnetcurry.com/aspnet-mvc/724/handle-multiple-submit-buttons-aspnet-mvc-action-methods )。
ActionMethodSelectorAttribute
可用,但方法IsValidForRequest
具有不同的签名。 有一个类型为RouteContext
的参数。 但我找不到那里的post数据。 所以我没有什么可以与我的自定义属性属性进行比较。
MVC Core中是否有与之前的MVC版本类似的优雅解决方案?
您可以使用HTML5 formaction
属性,而不是在服务器端路由它。
然后只需要像这样的控制器动作:
[HttpPost] public IActionResult DoWorkOne(TheModel model) { ... } [HttpPost] public IActionResult DoWorkTwo(TheModel model) { ... }
可以在此处找到适用于旧版浏览器的优质填充。
请记住……
- 当用户按下回车符时,将始终选择第一个提交按钮。
- 如果在发布的操作上发生错误 –
ModelState
或其他 – ,则需要将用户发送回正确的视图。 (但是,如果您通过AJAX发布,这不是问题。)
ASP.NET Core 1.1.0具有FormActionTagHelper
,用于创建formaction
属性。
这样渲染:
它也适用于type="image"
或type="submit"
input
标签。
- 为HTTPS配置ASP.NET Core 2.0 Kestrel
- Asp Net Core Web推送通知
- VS.NET 2017强制在ASP.NET 2.0 Core应用程序中使用StackExchange.Redis 1.2.4.0
- SendGrid在发送电子邮件时抛出InvalidApiRequestException
- 无法访问IIS 8上虚拟dotnet核心api应用程序下的虚拟目录
- 在OpenIddict中处理请求时发生未处理的exception
- 循环遍历List
- Store未实现IUserRoleStore ASP.NET Core 2.1 Identity
- 无法获取DbContext的reflection类型