ASP Net Core - скрытые поля ввода данных не передаются в контроллер - PullRequest
0 голосов
/ 24 января 2019

Мне нужно указать, какая кнопка нажата для отправки формы. Но скрытый ввод не получен в контроллере. Ниже приведены мои фрагменты кода

Просмотр модели:

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");
});

Я попытался показать текущее значение в функции оповещения, если оно изменилось, и это произошло.

В моем контроллере / действии при отладке я получаю нулевое значение для переменной ActionId. Я думаю, что это очень просто, но я не знаю, что я сделал не так.

Пожалуйста, помогите. Я застрял в этом на 2 часа. Заранее спасибо.

1 Ответ

0 голосов
/ 24 января 2019

Удалите атрибуты 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()
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...