2

我有动作

public ActionResult Edit(int id)

如果 id 为空,我需要重定向到操作索引。如何在路由中做到这一点?

我试过了:

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

但它没有帮助。

4

2 回答 2

0

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

于 2013-08-28T10:44:01.680 回答
0

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

public ActionResult Edit(int? id)
{
    if (id == null)
    {
        return RedirectToAction("Index");
    }

    //other logic
}

如果您不希望重定向并使 Index 操作响应带有http://example.org/Home/Edit URL 的请求,您可以创建如下路由:

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

只需确保此路由高于 RouteConfig 中的默认路由即可。

于 2013-08-28T10:55:06.017 回答