ASP.NET MVC C# 路由 - 传递空整数

发布于 2024-10-26 20:09:41 字数 703 浏览 6 评论 0原文

我正在 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
       );

url 是: http://app.domain /Users.aspx/Details/114142/5 (示例)

我成功获取了用户的 id,但无法获取页码。

用户的控制器是这样初始化的:

           public ActionResult Details(long id, int? page)

页面总是返回空(我需要页面作为空整数)。

我定义的路线错误吗?

谢谢

I'm working with MVC 3 in a web app and i'm facing a problem in routing.

I'm defining my router handler like this:

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

The url is: http://app.domain/Users.aspx/Details/114142/5 (example)

I'm sucefully getting the id of the user, but i can't get the page number.

The controller of users is initialized like this:

           public ActionResult Details(long id, int? page)

The page is always returning null (i need the page as a null integer).

And i defining the route wrong?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北渚 2024-11-02 20:09:41

如果 page 是可选的,则 id 不能是可选的。只有路由定义的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)
{
    ...
}

id cannot be optional if page is optional. Only the last parameter of a route definition can be optional.

So :

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

and then: /Users.aspx/Details/114142/5 will successfully map to

public ActionResult Details(long id, int? page)
{
    ...
}
嘿看小鸭子会跑 2024-11-02 20:09:41

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

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

You are using a wrong URL.
Try this:

http://app.domain/Users.aspx/Details/114142?page=5
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文