2013-08-28 15 views
4

我在一把umbraco應用程序(V6)實施地面控制器內一把umbraco表面控制器但是,這是行不通的。V6項目

下面是簡單的Hello World類:

public class MySurfaceController : Umbraco.Web.Mvc.SurfaceController 
{ 
    [HttpGet] 
    public ActionResult Index() 
    { 
     return Content("hello world"); 
    } 
} 

不幸的是,每當我訪問它,我得到一個HTTP 404錯誤。我曾嘗試以下網址:

  • /一把umbraco /面/我
  • /一把umbraco /面/ mysurface
  • /一把umbraco /面/ mysurfacecontroller
  • /一把umbraco /面/我的/指數
  • /一把umbraco /表面/ mysurface /索引
  • /一把umbraco /表面/ mysurfacecontroller /索引

我的Global.asax從Umbraco.Web.UmbracoApplication

繼承

有沒有人有任何建議,我可能做錯了什麼?

謝謝

回答

1

幾件事情在這裏:

您不再需要結束你的名字控制器「SurfaceController」,從SurfaceController只是繼承。

此外,如果您的控制器被稱爲MyController,您也不需要路徑前綴/Umbraco/surface/,那麼只需在/my/就可以訪問Index()操作。

編輯:

假設您想爲來自控制器的網頁,你將需要修改的web.config AppSetting條目包括控制器的路徑

<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/my" /> 

您還需要從global.asax註冊專門用於您的控制器的路線:

routes.MapRoute(
    name: "Default", 
    url: "my/{action}/{id}", 
    defaults: new { action = "Index", id = UrlParameter.Optional } 
); 

重要的是,這是特定於您的控制器,因爲您不希望它覆蓋任何Umbraco路由。

+0

OK,我已經改變了控制器myController的名稱,並試圖在/我的/索引/ myController的/索引來訪問它,/我的/,/一把umbraco /面/我,/一把umbraco /面/我的/指數。沒有什麼,只是一個錯誤404. – krisdyson

+0

我已經更新了答案,你可能沒有提出/瞭解其他更改。 – Digbyswift

+0

感謝您的幫助。但是,我發現了另一個正在清除RouteTable的組件。我之前無法調試,因爲每當我開始調試時,VS都會報錯!無論如何,我現在已經解決了這一連串問題!謝謝 – krisdyson