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