C# 如何处理部分/整页提交

C# 如何处理部分/整页提交,c#,html,asp.net,.net,razor,C#,Html,Asp.net,.net,Razor,我有一个带有2个提交按钮的编辑页面。现在我有第三个可以封装两个编辑部分。控制器上的formCollection只有“Edit1”字段。如何传递所有数据?(如果我删除了Edit1和Edit2的using语句,我将获得所有数据) @使用(Html.BeginForm(“EditAll”,“Account”,FormMethod.Post,new{id=“EditAll”})) { @使用(Html.BeginForm(“Edit1”,“Account”,FormMethod.Post,new{id

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

@使用(Html.BeginForm(“EditAll”,“Account”,FormMethod.Post,new{id=“EditAll”}))
{ 
@使用(Html.BeginForm(“Edit1”,“Account”,FormMethod.Post,new{id=“Edit1”}))
{   
... 
编辑1
}
@使用(Html.BeginForm(“Edit2”,“Account”,FormMethod.Post,new{id=“Edit2”}))
{   
... 
编辑2
}
全部编辑
}

请参阅这篇关于拥有多个提交按钮的文章:

基本上,您将使用以下代码:

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;
    }
}

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

您可能希望在答案中包含该文章中的内容作为引用,因为链接有时会断开,这很可能会将此答案标记为删除。好主意,我将从文章中添加一些内容。
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;
    }
}