加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET MVC Core / 6:多个提交按钮

发布时间:2020-12-15 06:48:51 所属栏目:百科 来源:网络整理
导读:我需要多个提交按钮来在控制器中执行不同的操作. 我在这里看到一个优雅的解决方案:How do you handle multiple submit buttons in ASP.NET MVC Framework? 使用此解决方案,可以使用自定义属性来修饰动作方法.当处理路由时,此自定义属性的方法将检查属性的属
我需要多个提交按钮来在控制器中执行不同的操作.

我在这里看到一个优雅的解决方案:How do you handle multiple submit buttons in ASP.NET MVC Framework?
使用此解决方案,可以使用自定义属性来修饰动作方法.当处理路由时,此自定义属性的方法将检查属性的属性是否与点击的提交按钮的名称相匹配.

但是在MVC Core(RC2 nightly build)中,我没有找到ActionNameSelectorAttribute(我也搜索了Github资源库).我发现使用ActionMethodSelectorAttribute(http://www.dotnetcurry.com/aspnet-mvc/724/handle-multiple-submit-buttons-aspnet-mvc-action-methods)的类似解决方案.

ActionMethodSelectorAttribute可用,但方法IsValidForRequest具有不同的签名.有一个类型为RouteContext的参数.但是我找不到帖子数据.所以我没有什么可以与我的自定义属性属性进行比较.

MVC Core中有类似优雅的解决方案,就像以前的MVC版本一样吗?

解决方法

您可以使用HTML5 formaction属性,而不是将其服务器端路由.
<form action="" method="post">
    <input type="submit" value="Option 1" formaction="DoWorkOne" />
    <input type="submit" value="Option 2" formaction="DoWorkTwo"/>
</form>

然后只需要这样的控制器操作:

[HttpPost]
public IActionResult DoWorkOne(TheModel model) { ... }

[HttpPost]
public IActionResult DoWorkTwo(TheModel model) { ... }

较老的浏览器的一个很好的polyfill可以是found here.

请记住…

>当用户按回车键时,将始终选择第一个提交按钮.>如果发布的操作发生错误 – ModelState或其他错误,则需要将用户发送回正确的视图. (这不是一个问题,如果你通过AJAX发布,但是.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读