1

我正在使用 Sitecore 7,在我当前遇到问题的页面中,我有一个带有两个控制器渲染的布局 (cshtml)。

两个控制器渲染映射到不同的控制器动作但使用相同的控制器。因此,控制器渲染 A 映射到控制器“搜索”、操作“ProductSearch”,控制器渲染 B 映射到控制器“搜索”、操作“客户搜索”

“搜索”控制器中有 4 个方法。

  1. 返回查看结果的“ProductSearch”
  2. 设置了处理表单提交的 HttpPost 属性的“ProductSearch”
  3. 正在返回查看结果的“CustomerSearch”
  4. 设置了处理表单提交的 HttpPost 属性的“CustomerSearch”

这就是表格的写法

@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 
        }

然后只调用一个控制器操作,但页面仅呈现该控制器操作的视图结果

有什么我想念的吗?

4

1 回答 1

0

我从https://bitbucket.org/demoniusrex/launch-sitecore-mvc-demo/src找到了一些线索

基本上是为了让 Sitecore 在进行 POST 时呈现整个布局。在控制器动作中,我们需要通过调用 Index() 返回一个 ActionResult - 您的控制器需要继承 SitecoreController。

Index() 方法负责渲染整个布局,并初始化所有的渲染和关联的模型。在上面的链接中查看模型类是如何被初始化的,这是如何完成的。

于 2013-06-27T00:53:07.553 回答