我主要有静态视图页面,例如:
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();
}
}
但由于控制器操作名称中的连字符,它会给我一个错误。
如何解决此问题?
答案 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更有意义,否则你将创造和管理比实际需要更多的控制器和动作。