Использование частичного представления внутри Html .BeginForm отправляет нулевую модель в метод действия контроллера - PullRequest
0 голосов
/ 29 апреля 2020

My Get ActionMethod:

        public ActionResult GetData(int id)
        {
            TestModel testModel = new DataAccess().GetData(id);
            return View(testModel);
        }

View 


@model TestModel

@using (Html.BeginForm("UpdateRequest", "Home", FormMethod.Post))

{

    <div>
        @Html.Partial("_Information", Model.Information)
    </div>

    <input type="submit" id="btnSubmit" value="Save" />
}

Данные отображаются правильно в частичном представлении _Information. Но когда я нажимаю кнопку «Сохранить», модель, переданная в контроллер, становится пустой.

Метод домашнего контроллера выглядит следующим образом:

    [HttpPost]
    public ActionResult UpdateRequest(TestModel testModel)
    {
        new DataAccess().UpdateData(testModel);
        .....
    }

Но модель, полученная для UpdateRequest, null Пожалуйста, помогите решить эту проблему.

Примечание : Частичное представление не содержит никаких дополнительных тегов BeginForm. Если отдельные элементы управления частичного представления добавляются в основное представление, объект модели заполняется.

1 Ответ

0 голосов
/ 29 апреля 2020

Вы проверили, что есть в коллекции форм, когда контроллер отправляет обратно?
Я бы рискнул предположить, что устанавливается HtmlFieldPrefix, из-за чего элементы управления формы имеют странное имя, которое не соответствует вашему. POCO.

Вы можете изменить HtmlFieldPrefix в своем частичном представлении для соответствия подобъекту, который вы хотите установить, используя:

@ViewData.TemplateInfo.HtmlFieldPrefix = "Your sub object property name here"

HTH

...