看法:
<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
被调用并且页面显示时
父视图数据:
PartialView ViewData:来自 MemberSignup
然后,当我使用无效输入在部分视图上提交表单时,它不会验证并调用CurrentUmbracoPage()
操作MemberSignupSubmit
我得到以下信息:
父 ViewData:来自 MemberSignupSubmit
PartialView ViewData:来自 MemberSignup
如果我@Html.Partial
用来渲染我的部分视图,两个视图包都显示提交操作中设置的相同值。
我已经尝试过TempData
,但它也不起作用。@Html.Action
在我使用渲染部分视图表单时从提交操作返回后,真的没有办法将任何内容传递回部分视图。
我要解决的总体问题是使用数据库中的值填充表单中的下拉列表。使用@Html.Partial
不允许我这样做,但有一个工作视图包。