MVC3 Несколько PartialViews в одном представлении - PullRequest
0 голосов
/ 13 марта 2012

Ответ предоставлен здесь - это именно то, что у меня происходит.Но когда я нажимаю на кнопку submit в любом из этих видов, вывод - это всего лишь HTML-код для PartialView!Я новичок в MVC3, так что я уверен, что мне просто не хватает того, что я уже должен был выучить.

 public ActionResult CreateV2Worksheet()
    {
        return PartialView("_NewV2WorksheetInput", new NewV2WorksheetInputModel());
    }

    [HttpPost]
    public ActionResult CreateV2Worksheet(NewV2WorksheetInputModel pNewV2Input)
    {
        if (ModelState.IsValid)
        {
            ModelState.AddModelError("ScreeningNumber", "random server err");
            return PartialView("_NewV2WorksheetInput", pNewV2Input);    
        }

        return PartialView("_NewV2WorksheetInput", pNewV2Input);
    }

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Я собираюсь предположить, что вы не отправляете через AJAX, поэтому вы делаете полный постбэк. В этом случае ваш вывод имеет смысл: вы публикуете в частичном представлении, а затем все, что вы получаете, - это HTML-код для частичного представления, поскольку после инициации публикации ваше HTML-состояние исчезает. Частичные являются просто частичными. Вы не можете публиковать частичные и ожидаете получить полный вывод.

Я бы порекомендовал либо публиковать в действии, которое отображает всю страницу, либо иметь частичную визуализацию либо в режиме полного просмотра страницы (return FullPageView( someData );), либо делать переадресацию в просмотр полной страницы (return Redirect( "FullPageview" );).

В качестве альтернативы, вы можете отправить сообщение через ajax и вернуть JsonResult, а затем обработать любые изменения пользовательского интерфейса на клиенте (jquery и т. Д.). Вы должны быть в состоянии сделать это, используя Ajax.BeginForm () ... но я не использую это лично, поэтому ничем не могу помочь. Здесь есть сообщение здесь , в котором показано, как получить необработанный частичный вывод и обновить пользовательский интерфейс. Другой метод - вернуть объект с JsonResult с обработкой ошибок и тому подобным, и проанализировать его. И.Е.

return Json( someReturnObjectThatYouDefinedThatMayAlsoHaveAnErrorState );

0 голосов
/ 13 марта 2012

Использование return View("_NewV2WorksheetInput", pNewV2Input);

вместо return PartialView("_NewV2WorksheetInput", pNewV2Input);.

Тогда частичное представление будет преобразовано в макет, который вы использовали для текущей страницы. Если вы хотите визуализировать частичное представление в другой макет, поместите его поверх вашего PartialView.

@{
      Layout="~/Views/Shared/<Layout Name>.cshtml"
}
...