Запрет ModelBinder для связывания обязательных свойств строки, которые не используются в представлении - PullRequest
0 голосов
/ 02 апреля 2020

ModelState заполняется дополнительными ключами, которых нет в значениях записей. Странно то, что это происходит только для обязательных string свойств, а не для int.

. См. Эту модель:

public class Employee {
    [Required] public int Id { get; set; }
    [Required] public string Name { get; set; }
    [Required] public string School { get; set; }
    [Required] public int Age { get; set; }
}

Так я объявил это на странице Razor. code:

[BindProperty] public Employee Item { get; set; }

Это код формы моего просмотра Razor Page:

<form method="post">
    @Html.LabelFor(x => x.Item.Id)
    @Html.TextBoxFor(x => x.Item.Id)
    <hr />
    @Html.LabelFor(x => x.Item.Name)
    @Html.TextBoxFor(x => x.Item.Name)
    <hr />
    <button type="submit">Send</button>
</form>

Мой первый вопрос о том, как заполняется ModelState. Обратите внимание, что, несмотря на то, что у класса 4 есть обязательные свойства, я использую только два из них (Id и Name). Когда я отлаживаю метод OnPost(), несмотря на то, что форма запроса передает только эти свойства, ModelState заполняется дополнительным свойством School. Почему School (string type) вставляется в ModelState, а почему Age (int type) - нет?

Мой второй вопрос - как предотвращать School передается ModelState, так как для меня не имеет значения, с этой точки зрения, точно так же Age также не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...