如何处理部分/完整页面提交

时间:2013-11-05 15:17:29

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

我有一个包含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>
}

1 个答案:

答案 0 :(得分:0)

请参阅此文章,了解有多个提交按钮: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;
    }
}

与给出提交按钮的“名称”属性一起调用要调用的操作方法的名称。