asp.net-mvc-3 - MVC3远程属性和多个提交按钮

标签 asp.net-mvc-3

我发现使用带有 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-controllerdata-action 在单击的按钮上,然后触发表单的提交事件。

当然,这个特定的示例不太通用,它总是会创建/Controller/Action url,但是可以通过点击操作中的更多逻辑轻松扩展。

只是一个提示:)

关于asp.net-mvc-3 - MVC3远程属性和多个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172262/

相关文章:

c# - DataAnnotations 在 MVC 中是如何工作的?

javascript - 在具有复杂数组的 Controller 中绑定(bind) MVC 模型

asp.net - 如何在索引和编辑 View (强绑定(bind))中传递和合并 MVC3 中的两个模型?

asp.net - ASP .NET 应用程序缓存

c# - 我如何在非 Web 应用程序中使用 Razor...例如邮件合并程序?

asp.net - Application_Error 被多次调用

asp.net-mvc - 如何在 html block 中为 MVC 3 中的 View 创建一个类?

c# - 在 ASP.NET MVC 中使用临时表

c# - 如何为 Razor View 创建默认的 AjaxOptions?

asp.net-mvc-3 - Windows Server 2008 R2 上的 Solr