我们在输入HTML标签中有一个按钮ID作为"预览按钮"。
<button type="submit" id="previewButton"></span>Preview</button>
<button type="submit" id="submitButton"></span>Submit</button>
我需要在模型中获取 Id = 预览按钮(或(提交按钮。
public class MyTestViewModel : BaseModel
{
public MyTestViewModel()
{
IsDateChanged = null;
IsChanges = null;
}
public Guid ID { get; set; }
[Required(ErrorMessage ="Required")]
[Display(Name = "Determine the date has changed?")]
public int? IsDateChanged { get; set; }
[Required(ErrorMessage = "Required")]
[Display(Name = "Is there any changes?")]
public int? IsChanges { get; set; }
public string PersonName { get; set; }
[DataType(DataType.Date)]
public DateTime PersonDOB { get; set; }
}
Jquery :
$(document).ready(function () {
$("button").click(function () {
var clickedButtonName = $(this).val();
$("#clickedButton").val(clickedButtonName);
$('#previewButton').trigger('submit');
});
});
控制器:
public ActionResult New(MyTestViewModel viewModel, string ClickedButton)
{
var vm = ClickedButton;
return View(vm);
}
如何在 c# 中获取 HTML 输入按钮 ID - 模型或控制器?
您可以为两个按钮提供相同的name
属性值,并为value
属性提供唯一值。
@using (Html.BeginForm("New", "Home"))
{
<!-- Your other form input elements goes here -->
<button type="submit" value="preview" name="from">Preview </button>
<button type="submit" value="submit" name="from">Submit </button>
}
提交表单后,它将在表单数据中发送单击的按钮值。
现在,在处理表单提交的操作方法中,您可以添加另一个与按钮名称同名的参数
[HttpPost]
public ActionResult New(MyTestViewModel viewModel,string from)
{
// to do : use "from"
// to do : return something
}
或者,您可以向视图模型添加一个与按钮名称同名的新属性。
public class MyTestViewModel
{
// your existing properties goes here
public string From { set;get;}
}
提交表单后,模型绑定程序将能够将按钮值名称映射到此新属性。
您的表单应如下所示:
@using (Html.BeginForm("New", "Home", FormMethod.Post, new {id="MyFormId"}))
{
<input type="hidden" id="clickedButton" name="clickedButton" value="">
<!-- Your other form input elements goes here -->
<button type="button" value="preview">Preview</button> // button type is button not submit
<button type="button" value="submit">Submit</button> // button type is button not submit
}
然后在 jQuery 中:
$(document).ready(function(){
$("button").click(function(){
var clickedButtonName = $(this).val();
$("#clickedButton").val(clickedButtonName);
$('#MyFormId').trigger('submit');
});
});
然后在控制器开机自检方法中:
[HttpPost]
public ActionResult New(MyTestViewModel viewModel,string clickedButton)
{
// do the necessary staff here
}