Входные данные флажка остаются ложными при отправке формы - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь post a form, и хотя все inputs отображают свое значение соответственно в controller -методе приема, bool -ые флажки остаются false. Что я делаю не так?

ПОКО

class MyPoco
{ 
   public string User{get;set;}
   public bool Require {get;set;}
}

Форма

<form id="createForm" method="post" action="[some url]">

<input type="checkbox" id="require" name="Require" />

<input type="text" id="user" name="User"/>

</form>

Контроллер (метод)

 [HttpPost]
 [Route("[some url]")]
 public async Task<long> CreateAsync(MyPoco request)
 {

 }

Почему в моем случае выше request.Require всегда ложно. Я правильно сопоставил их (атрибут name).

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Причина в том, что вы забыли установить значение флажка:

<input type="checkbox" id="require" name="Require" value="true" />

Если флажок установлен, значения обратной передачи будут содержать пару ключ-значение в форме [InputName] = [InputValue]

Если флажок не установлен, то опубликованная форма вообще не содержит ссылки на флажок.

1 голос
/ 04 апреля 2019

Я вижу, вам не хватает атрибута asp-for для вашего флажка ввода.Вместо name="Require" используйте asp-for="Require" следующим образом:

@model MyPoco

<input asp-for="Require" type="checkbox" id="require"  />

Если вы не хотите использовать атрибут asp-for, тогда вы должны использовать jQuery следующим образом:

$(document).on('change','#require',function() { 
    if ($(this).is(':checked')) {
        $(this).val(true) 
    } else {
        $(this).val(false) 
     }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...