我正在使用Sitecore 7,在我目前遇到问题的页面中,我有一个带有两个控制器渲染的布局(cshtml)。
两个控制器渲染映射到不同的控制器操作但使用相同的控制器。因此控制器渲染A映射到控制器“搜索”,操作“ProductSearch”和控制器渲染B映射到控制器“搜索”,操作“CustomerSearch”
“搜索”控制器中有4种方法。
这就是表单的编写方式
@using(Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName,FormMethod.Post))
{
@Html.Sitecore().FormHandler()
//form fields here
}
当我提交其中一个表单时,我注意到两个控制器操作都被执行了,这不是我所期待的。
如果我然后将控制器渲染表单处理程序之一更改为
@using(Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName,FormMethod.Post))
{
@Html.Sitecore().FormHandler("search","customersearch")
//form fields here
}
然后只调用一个控制器动作,但页面仅从该控制器动作
呈现视图结果有什么我想念的吗?
答案 0 :(得分:0)
我从https://bitbucket.org/demoniusrex/launch-sitecore-mvc-demo/src
找到了一些线索基本上是为了让Sitecore在执行POST时呈现整个布局。在控制器操作中,我们需要通过调用Index()来返回ActionResult - 您的控制器需要继承SitecoreController。
Index()方法负责渲染整个布局,并初始化所有渲染和关联模型。了解如何在上面的链接中初始化模型类,了解如何完成此操作。