我正在一个用户要向网站添加页面的网站上工作,我正在尝试使用路由来在创建后立即使用该页面。
例如,用户可以创建一个“关于”页面,现在我在添加页面时在控制器中添加了一些逻辑。
if (ModelState.IsValid)
{
context.Pages.Add(page);
context.SaveChanges();
RouteTable.Routes.MapRoute(page.Name, page.Url,
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
return RedirectToAction("Index");
}
但是当我创建About页面时将About作为url然后尝试转到/ About,我收到404错误。
是否可以在Application_Start之外添加路由?
答案 0 :(得分:0)
您应该避免在控制器操作中定义任何路由。对于您的方案,您可以定义以下路线:
routes.MapRoute(
"Default",
"{id}",
new { controller = "Home", action = "Index" }
);
现在,/About
表单的请求将路由到Index
控制器的Home
操作,并将id=About
作为参数传递:
public ActionResult Index(string id)
{
// if the request was /About, id will equal to About here
...
}