在Application_Start之后添加路由

时间:2011-09-24 19:08:31

标签: asp.net asp.net-mvc-3 routing

我正在一个用户要向网站添加页面的网站上工作,我正在尝试使用路由来在创建后立即使用该页面。

例如,用户可以创建一个“关于”页面,现在我在添加页面时在控制器中添加了一些逻辑。

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之外添加路由?

1 个答案:

答案 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
    ...
}