URL未将参数传递给方法

时间:2017-06-19 18:24:10

标签: c# html asp.net-mvc razor asp.net-mvc-routing

这是我的RouteConfig:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
         name: "Edit",
        url: "{sub_num}/Edit",
        defaults: new { controller = "Projects", action = "Create" }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Projects", action = "Clear", id = UrlParameter.Optional }
    );
}

我的ProjectsController中的我的Create方法有一个参数int? sub_num。当我尝试转到http://localhost:64692/30000032739/Edit时,该方法返回400 Bad Request,这是null sub_num参数的结果。我设置了一个断点来检查这个,并且当调用该方法时,sub_num确实为null。可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

显然, 30000032739 大于Int32.MaxValue,因此模型绑定器无法将其绑定到您的int? sub_num参数。

如果您真的希望获得此类数字值,则最好选择long?。如果它只是你传递的任意数字序列,显然请使用string

请参阅Documentation