2014-02-23 25 views
5

嗨我有我的'家'控制器和'排序'控制器在umbraco 7。'家'控制器工作正常的索引行動,因爲它從RenderMvcController重寫。首先,我很困惑我應該在哪個實例中使用哪個控制器,即一個表面控制器或一個rendermvc控制器。我似乎無法訪問下面的twitter動作,這是我需要的Ajax。我是否需要將twitter動作放在曲面控制器中,或者我可以在umbraco中使用常規的mvc控制器嗎?Umbraco曲面控制器或RenderMvcController

 public override ActionResult Index(RenderModel model) 


     { 
      var storedProcedure = new StoredProcedure() 
      { 
       ConnectionString = ConfigurationManager.ConnectionStrings["CentralDbContext"].ConnectionString 
      }; 

      DataSet ds = storedProcedure.ExecuteProcedureToDataSet("GetHomePage"); 

      IMapSetup map = new MapHomePage(); 
      HomePage homepage = map.Setup<HomePage>(ds); 


      homepage.Slideshow = CurrentPage.AncestorsOrSelf(1).First().Descendants("SlideshowItem").Take(5).AsMany<Slideshow>(); 

      this._weatherSettings.DefaultLocation = "warrington"; 
      homepage.Forecast = new Forecaster(this._weatherSettings, this._cacheHelper).GetWeather(this._weatherSettings.DefaultLocation); 

      return CurrentTemplate(homepage); 
     } 
public ActionResult TwitterSort(int? page) 
    { 
     int currentPageIndex = page.HasValue ? page.Value - 1 : 0; 

     var storedProcedure = new StoredProcedure() 
     { 
      ConnectionString = ConfigurationManager.ConnectionStrings["CentralDbContext"].ConnectionString 
     }; 

     DataSet ds = storedProcedure.ExecuteProcedureToDataSet("GetHomePage"); 

     IMapSetup map = new MapHomePage(); 
     HomePage homepage = map.Setup<HomePage>(ds); 


     if (Request.IsAjaxRequest()) 
     { 
      return PartialView("umbTweets", homepage.Twitter.ToPagedList(currentPageIndex, DefaultPageSize)); 
     } 

     return PartialView(homepage.Twitter.ToPagedList(currentPageIndex, DefaultPageSize)); 
    } 

回答

5

我的做法是:

  • 渲染控制器僅僅用於顯示數據給用戶。
  • 表面控制器進行交互(我用這個相互作用主要是AJAX,或形式)

爲了使孩子的行動,你可以使用下面的例子:

http://our.umbraco.org/documentation/Reference/Mvc/child-actions

更新: 爲了實現定製路由你可以看看

http://cpodesign.com/blog/umbraco-implementing-routing-in-mvc/

+0

我可以更改默認路徑,表面控制器在umbraco tho中使用,我不希望我的主頁是/ umbraco /表面在url-我可以更新模型獲取傳遞給視圖與surfacecontroller –

+0

@MatthewChambers檢查更新,是的,你可以,不,你不應該有一切通過表面控制器運行(只有通信) – cpoDesign

+0

不要忘記在umbraco的web.config中添加路徑umbracoReservedPaths – VinnyG

相關問題