Sitecore 7.1v1,最新的 Glass Mapper,MVC4。当我们提交表单 POST 时,我们没有得到带有返回视图的布局。我宁愿不必重定向到另一个页面,因为这应该是一种类似向导的体验。这也是轻量级的,不需要 Ajax,尽管我们可以将它用作最后的手段。我找不到谁来确保在返回 View 时我们也获得了布局。我是 Sitecore MVC 的新手,一般来说在 MVC 上也很新。引用的 PageBase 是使用 Glass 的自定义模型。
我们有以下控制器渲染:
public class RegistrationController : Controller
{
[HttpGet]
public ActionResult VerifyAccount()
{
return View("~/Views/Public/Wizards/Registration/VerifyAccount.cshtml",
new SitecoreContext().GetCurrentItem<PageBase>());
}
[HttpPost]
public ActionResult CreateProfile()
{
ViewBag.Name = Request["VerificationType"];
ViewBag.Step = 2;
return View("~/Views/Public/Wizards/Registration/CreateProfile.cshtml",
new SitecoreContext().GetCurrentItem<PageBase>());
}
}
此操作的默认操作是 VerifyAccount()。这按预期呈现。初步看法如下:
@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<Public.Model.GlassModel.Primary.PageBase>
<div>
<h3>@Editable(a => a.Title)</h3>
<p>
@Editable(a => a.Description)
</p>
<hr />
@using (Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName, FormMethod.Post))
{
@Html.Sitecore().FormHandler("Registration", "CreateProfile")
@Html.ValidationSummary(true, "Verification Not Selected.")
<fieldset>
@Sitecore.Globalization.Translate.Text("$Registration.VerificationTitle")
@{ var validations = new SitecoreContext().GetItem<GlassFrameBase>(Guid.Parse("{3694FC43-3DB7-470A-A1E9-2649856AAF10}"));}
<select id="VerType" name="VerificationType">
@foreach (var validation in validations.GetChildren<VerificationMethod>())
{
<option value="@validation.MethodValue">@validation.MethodName</option>
}
</select>
<input type="submit" value="Next" />
</fieldset>
}
这将返回到 CreateProfile() 方法。这部分效果很好。唯一的问题是,当它这次返回视图时,它只返回没有布局的视图。
最终视图如下:
@using (Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName, FormMethod.Post))
{
@Html.Sitecore().FormHandler()
<p>
<b>Verification Type Was: </b>@ViewBag.Name
</p>
<p>@ViewBag.Step</p>
<input type="hidden" value="ThisIsATest" name="TestHidden" id="TestHidden"/>
<input type="submit" name="back" value="Back" /><br />
<input type="submit" name="next" value="Next" />
}
其他一切都按预期工作,但我错过了在回程中加载布局的重要内容。