如何在 ASP.Net MVC5 中获取模型中的 HTML 输入按钮 ID?



我们在输入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
}

最新更新