Asp.net mvc 5 在MVC5中回发后,无法获取控制器中按钮的值

Asp.net mvc 5 在MVC5中回发后,无法获取控制器中按钮的值,asp.net-mvc-5,Asp.net Mvc 5,我试图在控制器方法中捕获按钮的值。我有两个按钮“保存”和“提交”,这两个按钮可以发回同一个表单。我需要确定按下了哪个按钮。这些按钮实际存在于表单外部,并使用javascript触发回发。按钮不在的原因是因为布局的原因。我已经命名了按钮以及指定的值。不确定为什么回发时它们为空。这是密码 <div class="buttonalign" > <button name="button" value="submit" onclick="$('#requestHeaderform

我试图在控制器方法中捕获按钮的值。我有两个按钮“保存”和“提交”,这两个按钮可以发回同一个表单。我需要确定按下了哪个按钮。这些按钮实际存在于表单外部,并使用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>
}
**视图**
$(函数(){
$(“#提交”)。单击(功能(e){
e、 预防默认值();
警报($(“#提交”).attr(“值”);
$(“#ButtonHiddenValue”).val($(“#submit”).attr(“value”);
$('#requestHeaderform')。提交();
});
$(“#保存”)。单击(函数(e){
e、 预防默认值();
$('ButtonHiddenValue').val($('save').attr(“value”);
$('#requestHeaderform')。提交();
});
});
提交
另存为草稿
@使用(Html.BeginForm(“Request_Insert”,“Home”,FormMethod.Post,new{id=“requestHeaderform”}))
{
}
**控制器**
公共操作结果请求\u插入(NewRequestViewModel NewRequestViewModel)
{
返回null;
}
**模型**
公共类NewRequestViewModel
{
公共字符串ButtonHiddenValue{get;set;}
}

您指的是“我的帖子”右侧的“姓名”属性。我添加了您的代码,值为空,原因是您将按钮保留在表单外部。您可以在表单内部放置一个隐藏字段。获取在js中单击的按钮,并使用单击的按钮值设置隐藏字段,然后发布。您还可以使用
表单
属性:
。然后,您的按钮可能在表单之外。但是,并非所有浏览器都支持这一点,尤其是IE的任何版本都不支持这一点。不过,您可以使用某种JS for IE,通过在表单中设置隐藏输入并提交表单来模拟行为。
[HttpPost]
        public ActionResult Request_Insert(NewRequestViewModel newReqeustViewModel,string button)
        {

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

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