我需要通过点击哪个按钮来提交表单。但是隐藏的输入未在控制器中接收到。以下是我的代码段
查看模型:
public class DocumentViewModel
{
public int Id { get; set; }
public int ActionId { get; set; }
}
剃刀(cshtml):
<form....>
<input id="docActionId" name="docActionId" asp-for="ActionId" type="hidden" value="initialValue" />
</form>
JavaScript:
$("#save_btn").on("click", function ()
{
$("#docActionId").val("test1");
});
$("#submit_btn").on("click", function ()
{
$("#docActionId").val("test2");
});
我尝试在警报功能中显示当前值(如果发生更改)。
在调试时,在Controller / Action中,我获得了ActionId变量的空值。我认为这很简单,但我不知道自己做错了什么。
请帮助。我被困了两个小时。预先感谢。
答案 0 :(得分:1)
删除“ Id”属性...这就是您所需要的。 “ asp-for”可以做到这一点。将您的重复项添加为同类
答案 1 :(得分:0)
删除name="docActionId"
html属性,它们将由Razor自动生成。
特别是通过asp-for="ActionId"
属性。
此外,此方法不起作用的原因是因为name
属性docActionId != ActionId
是对象属性的名称。因此它不知道将其绑定到何处。
<form id="myform">
<input id="docActionId" asp-for="ActionId" type="hidden" value="initialValue" />
<button type="submit" id="save">Submit</button>
</form>
尝试使用此javascript也许是在附加值之前提交表单
var saveButton = documnet.getElementById('save')
saveButton.addEventListener('click', function(e) {
e.stopPropagation();
documnet.getElementById('docActionId').value = "test value"
documnet.getElementById('myform').submit()
})