在MVC5中回发后无法获取控制器中按钮的值

时间:2017-04-21 15:01:43

标签: asp.net-mvc-5

我正在尝试捕获控制器方法中按钮的值。我有两个按钮保存并提交哪个帖子返回相同的表格。我需要确定按下了哪个按钮。这些按钮实际存在于表单之外,并使用javascript来触发回发。按钮出局的原因是布局原因。我已经命名了按钮以及指定的值。不确定为什么它们在回发时为空。这是代码

<div class="buttonalign" >
    <button name="button" value="submit" onclick="$('#requestHeaderform').submit();" class="btn btn-primary">Submit</button>
    <button name="button" value="save"   onclick="$('#requestHeaderform').submit();"  class="btn btn-default">Save as draft</button>

</div>

@using (Html.BeginForm("Request_Insert", "Request", FormMethod.Post,new { id = "requestHeaderform" }))
{

        <div class="newRequestHeader">
            @Html.Partial("~/Views/Request/_RequestHeaderView.cshtml")

        </div>
}

控制器方法

[HttpPost]
        public ActionResult Request_Insert(NewRequestViewModel newReqeustViewModel,string button)
        {

            switch (button)
            {
                case "submit":
                    // Do something
                    break;
                case "save":
                    // Do something
                    break;
                default:

                    break;
            }
}

1 个答案:

答案 0 :(得分:0)

**View**

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
    $(function() {
        $("#submit").click(function(e) {
            e.preventDefault();

            alert($("#submit").attr("value"));
            $('#ButtonHiddenValue').val($("#submit").attr("value"));
            $('#requestHeaderform').submit();
        });
        $("#save").click(function(e) {
            e.preventDefault();
            $('#ButtonHiddenValue').val($("#save").attr("value"));
            $('#requestHeaderform').submit();
        });
    });
</script>

<div class="row">
    <div class="buttonalign" >
        <button name="button" id="submit" value="submit"  class="btn btn-primary">Submit</button>
        <button name="button" id="save"  value="save"  class="btn btn-default">Save as draft</button>

    </div>

    @using (Html.BeginForm("Request_Insert", "Home", FormMethod.Post,new { id = "requestHeaderform" }))
    {
        <input id="ButtonHiddenValue" name="ButtonHiddenValue" type="hidden"  />

    }
</div>

**Controller**

 public ActionResult Request_Insert(NewRequestViewModel newReqeustViewModel)
        {

            return null;
        }

**Model**

 public class NewRequestViewModel
    {
        public string ButtonHiddenValue { get; set; } 
    }