ASP.NET MVC - 创建自定义路由而无需回退

时间:2013-12-10 09:44:48

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我正在创建一个MVC项目,我有以下链接,可以找到登录用户的网站列表:

http://[server]/Members/Websites

现在我想在用户的网站部分下添加一个新的自定义路由,这将导致一个服务连接页面:

http://[server]/Members/Websites/Connect-to-service/999

其中“999”是正在连接的网站的ID。

我已为该载人定义了以下路线(将其置于默认路线上方):

routes.MapRoute(
    name: "myRoute",
    url: "Members/Websites/Connect-to-service/{id}",
    defaults: new { controller = "Members", action = "Connect_To_Service" }
);

现在,如果我输入网址“http:// [server] / Members / Websites / Connect-to-service / 999”,它会加载我的网页。

如果我输入网址“http:// [server] / Members / Websites / Connect-to-service /”,则会加载网站页面。

我想要的是在加载“http:// [server] / Members / Websites / Connect-to-service /”时,它将重定向到“http:// [server] / Members / Websites / “(在浏览器网址中),或者找不到错误的网页。

可以这样做吗?

感谢

1 个答案:

答案 0 :(得分:3)

您可以在Connect_To_Service操作中配置:

public ActionResult Connect_To_Service(int? id = null)
{
    if (!id.HasValue)
    {
        // Either:
        return RedirectToAction("Websites", "Members");

        // Or:
        return HttpNotFound();
    }

    // An id is provided. Process..
}

您可能需要通过添加id的默认值来更改路线:

defaults: new { controller = "Members", action = "Connect_To_Service", id = UrlParameter.Optional }