ASP.NET MVC C#Routing - 传递一个空整数

时间:2011-03-25 17:32:09

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

我正在使用Web应用程序中的MVC 3,我遇到了路由问题。

我正在定义我的路由器处理程序:

           routes.MapRoute(
           "Users", 
           "{controller}.aspx/{action}/{id}/{page}", // URL with parameters
           new { controller = "Users", action = "Details", id = UrlParameter.Optional, page = UrlParameter.Optional } // Parameter defaults
       );

网址为:http://app.domain/Users.aspx/Details/114142/5(示例)

我很容易得到用户的id,但我无法获得页码。

用户控制器初始化如下:

           public ActionResult Details(long id, int? page)

页面始终返回null(我需要将页面作为空整数)。

我定义路线错了吗?

由于

2 个答案:

答案 0 :(得分:4)

如果id是可选的,则

page不能是可选的。只有路径定义的 last 参数才是可选的。

所以:

routes.MapRoute(
    "Users", 
    {controller}.aspx/{action}/{id}/{page}",
    new { 
        controller = "Users",  
        action = "Details", 
        page = UrlParameter.Optional 
    }
);

然后:/Users.aspx/Details/114142/5将成功映射到

public ActionResult Details(long id, int? page)
{
    ...
}

答案 1 :(得分:-2)

您使用的是错误的网址。 试试这个:

http://app.domain/Users.aspx/Details/114142?page=5