ASP.NET Core 8 MVC: значение модели не передается обратно в POST, если свойство дочернего классаC#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET Core 8 MVC: значение модели не передается обратно в POST, если свойство дочернего класса

Сообщение Anonymous »

По какой-то причине, когда я использую дочернее свойство в качестве значения asp-for, свойство модели HTTP Post показывает, что они не были изменены, и моя проверка ModelState не запускается .
Вот пример — просмотр

Код: Выделить всё

@model ViewModel





Модель

Код: Выделить всё

public class ViewModel
{
public string test { get; set; } = "test value";
public User subClass1 = new User();
}

public class User
{
public UserL user { get; set; } = new UserL();
}

public class UserL
{
[CustomEAttribute]
public string? email_addr { get; set; }
}
Метод HTTP POST:

Код: Выделить всё

[HttpPost]
[ValidateAntiForgeryToken]
public async Task Login(ViewModel model, Microsoft.AspNetCore.Http.IFormCollection collection)
{
// I've also found ModelState is not triggered on subClass1
// properties... only the 'test' property triggered.
if (!ModelState.IsValid)
{
}
}
Насколько я могу судить по моему контроллеру, модель ViewModel свойства не изменилась (т. е. не вернула входное значение моего представления) для email_addr.
>
Я пробовал использовать @Html.TextBoxFor вместо обычного ввода HTML, но все равно безуспешно.
Множество примеров в Интернете говорят, что вы должен быть в состоянии выполнить мой пример выше без проблем, поэтому не уверен, что не так с мой код.
Я знаю, что свойство коллекции Microsoft.AspNetCore.Http.IFormCollection показывает, что установлен subClass1.user.email_addr. Так почему же доступ к тому же значению в «модели» не работает?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -class-pro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»