我有以下路线:
// Submission/*
routes.MapRoute(
"Submission",
"Submission/{form}",
new { controller = "Submission", action = "Handle", form = "" });
// /<some-page>
routes.MapRoute(
"Pages",
"{page}",
new { controller = "Main", action = "Page", page = "Index" });
第一个路由完全按照this个问题提出请求。第二个通常路由一堆静态内容页面。例如localhost / Help,localhost / Contact等所有路由到MainController,它只是根据页面名称返回视图:
public class MainController : Controller
{
public ActionResult Page()
{
var page = (string)RouteData.Values["page"];
return View(page);
}
}
问题是,至少在测试期间,localhost /给出了一个目录列表而不是路由到Main / Index.aspx。真正的问题是它使我的SiteMap菜单失败,因为URL与Web.sitemap文件中定义的URL不匹配。但是,localhost / Index确实给了我正确的视图。
奇怪的是,这在Mono / XSP上可以正常工作。
答案 0 :(得分:1)
如果您使用Visual Studio Dev Server进行测试,那么它应该工作。我刚才尝试过。
在IIS上,“localhost /”和“localhost / Index”都不起作用,除非你启用wildcard mapping
所以它对我有用。你可能遗漏了帖子中不明显的东西。
顺便说一句,你的行动可以改善:public ActionResult Page(string page)
{
return View(page);
}
编辑: Here是我的示例项目。
答案 1 :(得分:0)
我终于明白了。 (可能)有两件事情出错了。一,项目必须具有MVC项目类型GUID。查看this的想法 - 尽管帖子不是主题。二,Visual Studio 2008要求SP1用于更新的ASP.NET开发服务器; SP1之前的版本没有启动没有Default.aspx页面的Global.asax。