ASP Net Core-隐藏的输入字段数据未在Controller中传递

时间:2019-01-24 09:38:26

标签: asp.net-mvc asp.net-core

我需要通过点击哪个按钮来提交表单。但是隐藏的输入未在控制器中接收到。以下是我的代码段

查看模型:

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变量的空值。我认为这很简单,但我不知道自己做错了什么。

请帮助。我被困了两个小时。预先感谢。

2 个答案:

答案 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()
})