如何通过通用路由重定向

时间:2013-08-28 10:41:46

标签: c# asp.net-mvc routing

我有行动

public ActionResult Edit(int id)

如果id为null,我需要重定向到动作索引。如何在路由中执行此操作?

我试过了:

routes.MapRoute(
                name: "Redirect from empty controller/edit to controller/list",
                url: "{controller}/Edit",
                defaults: new { controller = "Home", action = "Index" }
            );

但没有帮助。

2 个答案:

答案 0 :(得分:0)

嗯,不确定路由,但如果它有帮助你可以使用return RedirectToAction("index", "home");(其中index是你的动作方法,home是你想要访问它的控制器)。

答案 1 :(得分:0)

重定向很简单。您可以通过使其可为空来检查是否存在id参数。您不需要路由配置。这会在用户向http://example.org/Home

发送请求时将用户重定向到http://example.org/Home/Edit
public ActionResult Edit(int? id)
{
    if (id == null)
    {
        return RedirectToAction("Index");
    }

    //other logic
}

如果您不想重定向并使索引操作响应带有http://example.org/Home/Edit网址的请求,您可以创建如下路线:

routes.MapRoute("HomeEdit", 
                "Home/Edit", new {controller = "Home", action = "Index"});

只需确保此路线高于RouteConfig中的默认路线。