C# 使用routes.maproute和参数
我有一个参数要用作URL的默认结尾,但它当前是一个参数。我希望它始终指向主控制器和索引操作,但/将成为pageName参数 例如,我想要C# 使用routes.maproute和参数,c#,asp.net,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 3,Asp.net Mvc 4,我有一个参数要用作URL的默认结尾,但它当前是一个参数。我希望它始终指向主控制器和索引操作,但/将成为pageName参数 例如,我想要 http://localhost:18792/?pageName=HomePage 可通过以下方式访问: http://localhost:18792/HomePage 这是我当前的路线。地图路线: routes.MapRoute( name: "Default", url: "{controll
http://localhost:18792/?pageName=HomePage
可通过以下方式访问:
http://localhost:18792/HomePage
这是我当前的路线。地图路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{pageName}",
defaults: new { controller = "Home", action = "Index", pageName = "HomePage" }
);
为此,您必须为每个页面创建一个路由。不要修改默认路线。添加新路线:
routes.MapRoute(
name: "HomePage",
url: "HomePage",
defaults: new { controller = "Home", action = "HomePage" }
);
对于动态路由,您可以使用:
routes.MapRoute(
name: "PageName",
url: "{pageName}",
defaults: new { controller = "Home", action = "Index", pageName = "defaultPage" }
);
它将映射到~/defaultpage或~/homepage,并在主控制器中使用操作索引:
public ActionResult Index(string pageName)
{
ViewBag.Message = pageName;
return View();
}
为此,您必须为每个页面创建一个路由。不要修改默认路线。添加新路线:
routes.MapRoute(
name: "HomePage",
url: "HomePage",
defaults: new { controller = "Home", action = "HomePage" }
);
对于动态路由,您可以使用:
routes.MapRoute(
name: "PageName",
url: "{pageName}",
defaults: new { controller = "Home", action = "Index", pageName = "defaultPage" }
);
它将映射到~/defaultpage或~/homepage,并在主控制器中使用操作索引:
public ActionResult Index(string pageName)
{
ViewBag.Message = pageName;
return View();
}
但是,页面名是动态生成的。有没有办法告诉MVC,任何只有/string的页面都会通过自定义映射运行?添加了另一个选项,但这是有风险的,因为任何字符串都会尝试匹配到~/home/index/{pagename}-可能会生成大量404。不过,页面名是动态生成的。有没有办法告诉MVC,任何只有/string的页面都会通过自定义映射运行?添加了另一个选项,但这是有风险的,因为任何字符串都会尝试匹配到~/home/index/{pagename}-可能会生成大量404