我发现使用带有 RemoteAttibute 和 ActionNameSelectorAttribute 的 MVC 3 似乎存在错误。
我已经实现了一个解决方案来支持同一 View 上的多个提交按钮,类似于这篇文章:http://blog.ashmind.com/2010/03/15/multiple-submit-buttons-with-asp-net-mvc-final-solution/
该解决方案有效,但是,当我在模型中引入 RemoteAttribute 时,controllerContext.RequestContext.HttpContext.Request 不再包含任何提交按钮,这会导致“多提交按钮”解决方案失败。
还有其他人经历过这种情况吗?
最佳答案
我知道这不是对您问题的直接答案,但我会建议使用客户端 JQuery 和标记来替代多个提交按钮的解决方案:
Javascript
<script type="text/javascript">
$(document).ready(function () {
$("input[type=submit][data-action]").click(function (e) {
var $this = $(this);
var form = $this.parents("form");
var action = $this.attr('data-action');
var controller = $this.attr('data-controller');
form.attr('action', "/" + controller + "/" + action);
form.submit();
e.preventDefault();
});
});
</script>
HTML
@using (Html.BeginForm())
{
<input type="text" name="name" id="name" />
<input type="submit" value="Save draft" data-action="SaveDraft" data-controller="Home" />
<input type="submit" value="Publish" data-action="Publish" data-controller="Home" />
}
它可能不如代码解决方案那么优雅,但它提供的麻烦要少一些,因为唯一实际更改的是单击提交按钮时表单的操作属性。
基本上,它的作用是,每当单击带有属性 data-action 集的提交按钮时,它都会将其父表单 action-attribute 替换为属性 data-controller
和 data-action
在单击的按钮上,然后触发表单的提交事件。
当然,这个特定的示例不太通用,它总是会创建/Controller/Action url,但是可以通过点击操作中的更多逻辑轻松扩展。
只是一个提示:)
关于asp.net-mvc-3 - MVC3远程属性和多个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172262/