Предполагается, что тело сообщения является правильным; вам нужно переписать поля и превратить их в public get/set
свойства.
MVC не будет привязывать модель к полям.
Так как вы хотите иметь нестандартные значения по умолчанию для ваших членов; Вы можете использовать ctor по умолчанию, чтобы установить свойства по умолчанию для конструкции; хотя я бы предпочел подход, в котором вместо этого не используются автоматически реализованные свойства:
private string _email = string.Empty;
public string Email { get { return _email; } set { _email = value } }
В действительности, я полагаю, что во время выполнения есть небольшая разница, но если вы используете конструкторский подход, очень легко забыть добавить новое значение по умолчанию при добавлении нового свойства.
MVC не будет привязываться к полям в конечном итоге, потому что он использует класс System.ComponentModel.TypeDescriptor
для получения метаданных, используемых для определения свойств модели, которые должны быть связаны. Это не ошибка, однако, это дизайн и хороший выбор дизайна, поскольку он позволяет использовать механизмы, отличные от отражения, при описании типов моделей.