2013-06-25 35 views
1

我使用Sitecore 7,在我目前有問題的頁面中,我有一個使用兩個控制器渲染的佈局(cshtml)。Sitecore mvc在同一頁面處理多個表單

兩個控制器渲染映射到不同的控制器動作,但使用相同的控制器。因此控制器渲染A被映射到控制器「搜索」,動作「ProductSearch」並且控制器渲染B被映射到控制器「搜索」,動作「CustomerSearch」

「搜索」控制器有4種方法。

  1. 「產品搜索」,這是返回的視圖結果
  2. 「產品搜索」與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 
     } 

那麼只有一個控制器動作被調用,但該頁面只呈現從控制器操作

中的ViewResult是有什麼,我想念這裏?

回答

0

,我發現從https://bitbucket.org/demoniusrex/launch-sitecore-mvc-demo/src

基本上一些線索,以便Sitecore的做一個POST時使整個佈局。在控制器動作中,我們需要通過調用Index()返回一個ActionResult - 您的控制器需要繼承SitecoreController。

Index()方法負責渲染整個佈局,並初始化所有渲染和相關模型。瞭解模型類如何在上面的鏈接中初始化如何完成。

相關問題