2015-05-15 50 views
2

我想要的網址是MVC 1個參數

domain.com/doc/{project} 

我有一個控制器稱爲項目或5路由「ProjectsController.cs。」 這個控制器有一個動作(ActionResult),我想用我的自定義URL路徑調用「DocumentationIndex」。

DocumentationIndex確實有一個參數。這是一個簡單的字符串參數。

下繼續給我一個404

routes.MapRoute(
    name: "Documentation", 
    url: "doc/{project}", 
    defaults: new { controller = "Projects", action = "DocumentationIndex", project = "" } 
); 

任何人都可以點我在正確的方向?

+0

什麼是異常被拋出,什麼是異常的消息和什麼是異常的堆棧跟蹤。 –

回答

2

您可以使用屬性路由到控制器中定義的:

public class ProjectsController 
{ 
    [Route("doc/{*project}")] 
    public ActionResult DocumentationIndex(string project = "") 
    { // ... } 
} 

你需要確保屬性路由在您的路由配置中啓用:

routes.MapMvcAttributeRoutes(); 

{*projects}中的*將確保路由參數與URL的其餘部分匹配,即使它包含特殊字符。

+0

謝謝!不過,我有一個問題確實很愚蠢。如果字符串參數中有點,該怎麼辦?就像在「domain.com/doc/Project.v.2.1」中一樣,路由似乎可以正常工作,只需一個字參數。 – Ramin

+0

查看我的更新回答。 – Richard

+0

不幸的是,*並沒有什麼區別。 404錯誤繼續存在。簡單的一個字沒有特殊的字符串仍然工作。 – Ramin

0

試試這個:

routes.MapRoute(
    "Documentation", 
    "doc/{project}", 
    new { controller = "Projects", action = "DocumentationIndex" } 
); 

控制器代碼:

public class ProjectsController ... { 
    // 
    public ActionResult DocumentationIndex(string project = "") { 
     // ... 
    } 
}