ASP.NET Проект MVC, от представления к контроллеру, НУЛЕВАЯ модель

#c# #asp.net-mvc

Вопрос:

В ASP.NET Проект MVC, у меня очень сложная модель, часть класса ниже (класс БОЛЬШОЙ, я его сильно упростил, оставив только одно свойство):

 [Serializable]
public class SimulazioneModelComplete : SimulazioneModel
{
   public string Title { get; set; }
}
 

Я добавляю некоторые свойства в форму, как это:

 @using (Html.BeginForm("CreaEsito", "Simulazioni", FormMethod.Post, new { id = "CreaEsito", name = "CreaEsito", enctype = "multipart/form-data" }))
{
   Title:
   @Html.TextBoxFor(m => m.Title) 
}
 

Я поставил простую кнопку отправки

 <input type="submit" value="SUBMIT" />
 

И в контроллере у меня есть метод, ожидающий SimulazioneModelComplete модель

 [HttpPost]
public ActionResult CreaEsito(SimulazioneModelComplete model)
{
}
 

но когда я нажимаю «Отправить», model параметр всегда NULL .

Я не вижу пустых некоторых свойств, вся модель пуста. Я не размещаю полный код класса и формы, потому что они БОЛЬШИЕ и были бы нечитабельны.

Кто-нибудь может предложить причины для NULL модели?

Комментарии:

1. Почему вы используете [Serializable] ?

2. Пожалуйста, опубликуйте свой визуализированный HTML <form> . Также загляните на вкладку «Сетевая активность» инструментов разработчика вашего браузера. Наконец, есть ли у вас какое-либо пользовательское промежуточное программное обеспечение?

3. Как вы это проверили model null ? Есть ли у вас точка останова отладчика, установленная в вашем действии контроллера?

Ответ №1:

Я не знаю, зачем вам это нужно, но так как вы используете enctype = «составные/данные формы», вам нужно добавить атрибут в свой параметр действия

 [HttpPost]
public ActionResult CreaEsito([FromForm] SimulazioneModelComplete model)
{
}
 

Иногда в net core [FromBody] тоже может работать.

И я не знаю, зачем вам нужны удостоверение личности и имя, может быть, это было бы лучше

 @using (Html.BeginForm("CreaEsito", "Simulazioni", FormMethod.Post, 
new { enctype = "multipart/form-data" }))
 

Ответ №2:

Я нашел проблему … это было в модели. Модель включала ДВА свойства с одинаковым ИМЕНЕМ, но разным типом.

Что-то в процессе привязки становится безумным, и вся модель становится пустой.

Комментарии:

1. «Модель включала ДВА свойства с одинаковым ИМЕНЕМ, но разного типа». — это невозможно, компилятор будет жаловаться. Как это случилось?

2. Я не знаю КАК, я знаю, что нашел два объекта с одинаковым именем и разным типом.

3. Пожалуйста, поделитесь скриншотом того, что вы видите.