【问题标题】:Sitecore mvc handling multiple forms in the same pageSitecore mvc 在同一页面中处理多个表单
【发布时间】:2013-06-25 05:22:34
【问题描述】:

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

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

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

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

这就是表单的编写方式

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

然后只有一个控制器动作被调用,但页面只呈现来自该控制器动作的视图结果

这里有什么我想念的吗?

【问题讨论】:

    标签: asp.net-mvc sitecore sitecore7 sitecore-mvc


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 2015-02-20
      相关资源
      最近更新 更多