【问题标题】:How to handle partial/full page submit如何处理部分/整页提交
【发布时间】:2013-11-05 15:17:28
【问题描述】:

我有一个带有 2 个提交按钮的编辑页面。现在我有第三个可以封装两个编辑部分。控制器上的 formCollection 只有“Edit1”字段。如何传递所有数据? (如果我删除了 Edit1 和 Edit2 的 using 语句,我会得到所有数据)。

@using(Html.BeginForm("EditAll", "Account", FormMethod.Post, new { id = "EditAll" }))
{ 
    <div>
    @using(Html.BeginForm("Edit1", "Account", FormMethod.Post, new { id = "Edit1" }))
    {   
        ... 
        <button name="Submit" style="float: right;" class="client">Edit 1</button>
    }

    @using(Html.BeginForm("Edit2", "Account", FormMethod.Post, new { id = "Edit2" }))
    {   
        ... 
        <button name="Submit" style="float: right;" class="client">Edit 2</button>
    }
    </div>
    <button name="Submit" style="float: right;" class="client">Edit All</button>
}

【问题讨论】:

    标签: c# html asp.net .net razor


    【解决方案1】:

    请参阅这篇关于拥有多个提交按钮的文章:http://blog.ashmind.com/2010/03/15/multiple-submit-buttons-with-asp-net-mvc-final-solution/

    基本上你会使用这个代码:

    public class HttpParamActionAttribute : ActionNameSelectorAttribute {
        public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo) {
            if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
                return true;
    
            if (!actionName.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
                return false;
    
            var request = controllerContext.RequestContext.HttpContext.Request;
            return request[methodInfo.Name] != null;
        }
    }
    

    与为您的提交按钮的“名称”属性提供要调用的操作方法的名称相协调。

    【讨论】:

    • 您可能希望在您的答案中包含该文章中的某些内容作为引用,因为链接有时会损坏,这很可能会将该答案标记为删除。
    • 好主意,我会从文章中添加一些内容。
    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多