如何在ASP.NET MVC中构建大多数静态页面

时间:2010-10-06 08:37:59

标签: 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();
    }
}

但由于控制器操作名称中的连字符,它会给我一个错误。

如何解决此问题?

3 个答案:

答案 0 :(得分:5)

你可能需要的是某种“赶上所有”的路线:

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

您可以将此路线重定向到控制器方法:

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

答案 1 :(得分:3)

Adrians的回答是正确的,但是为了解决连字符问题并仍然使用默认路由,您可以在Action方法中添加一个ActionName属性来覆盖它所路由的名称,例如:

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

答案 2 :(得分:0)

方法和类名称中不允许使用连字符。但是下划线_是。你可以做的是重写带连字符的页面名称,并用下划线替换连字符。

那就是说,Adrians answer更有意义,否则你将创造和管理比实际需要更多的控制器和动作。