Вид:
<p>Parent ViewData: @ViewData["Test"]</p>
@Html.Action("MemberSignup","MemberSignupSurface")
Частичный вид:
<p>PartialView ViewData: @ViewData["Test"]</p>
@using (Html.BeginUmbracoForm<MemberSignupSurfaceController>
("MemberSignupSubmit", "MemberSignupSurfaceController",FormMethod.Post))
{
<!-- Some form controls -->
<input type="submit" value="Signup" />
}
Контроллер:
public class MemberSignupSurfaceController : SurfaceController
{
public ActionResult MemberSignup()
{
ViewData["Test"] = "From MemberSignup";
// Do database stuff and create model from that
return PartialView("MemberSignupView", model);
}
[HttpPost]
public ActionResult MemberSignupSubmit(MemberViewModel model)
{
ViewData["Test"] = "From MemberSignupSubmit";
if (ModelState.IsValid)
{
// Redirect to success using TempData
}
else
{
return CurrentUmbracoPage();
}
}
}
Когда вызывается загрузка моей страницы MemberSignup
, и страница показывает
Родитель ViewData:
PartialView ViewData: от MemberSignup
Затем, когда я отправляю форму в частичном представлении с недопустимым вводом, поэтому она не будет проверяться, и она вызывает CurrentUmbracoPage()
в действии MemberSignupSubmit
Я получаю следующее:
Parent ViewData: From MemberSignupSubmit
PartialView ViewData: от MemberSignup
Если я использую @Html.Partial
для рендеринга моего частичного представления, оба окна просмотра показывают одно и то же значение, установленное из действия отправки.
Я пробовал TempData
, но тоже не работает. Действительно ли нет способа передать что-либо обратно в частичное представление после того, как я вернусь из действия отправки при использовании @Html.Action
для отображения формы частичного просмотра.
Общая проблема, которую я пытаюсь решить, заключается в том, чтобы заполнить раскрывающийся список в моей форме значениями из базы данных. Использование @Html.Partial
не позволяет мне это делать, но у меня есть рабочая область просмотра.