2010-10-06 51 views
3

我主要具有靜態視圖頁面,例如:怎樣組織大多是靜態的頁面在ASP.NET MVC

http://www.yoursite.com/games/x-box-360/nba-2k-11.aspx http://www.yoursite.com/games/psp/ben-10.aspx

如何我可以在控制器構造呢?這是我在我的遊戲控制器較早編碼:

[HandleError] 
public class GamesController : Controller 
{ 
    public ActionResult ben-10() 
    {  
     return View(); 
    } 
} 

但它給我一個錯誤,因爲在控制器動作名稱連字符。

我該如何解決這個問題?

回答

5

什麼你可能需要的是某種「一網打盡」路線:

"/games/{platform}/{game}" 

可以將此路徑重定向到一個控制器方法:

public class GamesController : Controller 
{ 
    public ActionResult ViewGame(string platform, string game) 
    { 
     // do whatever 
     return View(); 
    } 
} 
0

方法和類名不允許使用連字符。但是下劃線_是。你可以做的是重寫連字符的頁面名稱並用下劃線替換連字符。

也就是說,Adrians answer更有意義,否則您將創建和管理比實際需要更多的控制器和操作。

+0

感謝您的迴應..。但如何像psp和Xbox遊戲子文件夾如何使用網址路線完成?或以其他簡單的方式太..以上將給http://www.yoursite.com/games/ben-10/我喜歡有什麼是http://www.yoursite.com/games/psp/ben -10.aspx。非常感謝你.. – idontknowhow 2010-10-06 08:49:10

+0

@idontknowhow - 說實話,我會與Adrians的建議,否則你會創建和管理更多的控制器和操作,而不是必要的。 – Kev 2010-10-06 09:00:44

3

Adrians答案是正確的,但要獲得在連字符問題周圍,仍然使用默認路由,您可以將ActionName屬性添加到您的操作方法以覆蓋其路由的名稱,例如:

[ActionName("ben-10")] 
public ActionResult ben10() 
{  
    return View(); //view is assumed to be ben-10.aspx, not ben10.aspx 
}