繁体   English   中英

2个可选的整数参数

[英]2 optional integer parameters

我的用户控制器操作如下所示:

[HttpGet]
public ActionResult Choose(int? userId, int? locationId)
{

}

该网址将如下所示:

/user/choose

要么

/users/user/choose/{userId}/{locationId}

我试图将其添加到我的区域路线中:

context.MapRoute(
    "User_Choose",
    "Users/{controller}/{action}/{userId}/{locationId}",
        new { Controller = "Reward", action = "Choose", userId = UrlParameter.Optional }
);

现在,如果我转到如下网址:

/users/user/choose/123/456

我看到userId参数有一个值,但是locationId始终为null。

可能是什么问题?

解决方法可能在这里:

context.MapRoute(
    "User_Choose",
    "Users/{controller}/{action}/{userId}/{locationId}",
        new { controller = "Reward", action = "Choose", userId = UrlParameter.Optional, locationId = UrlParameter.Optional}
);

您必须指定括号对匿名对象的含义,即设置其默认值。

编辑:实际上您的代码中没有问题。 我的控制器:

namespace WebApplication3.Areas.Users.Controllers
{
    public class UserController : Controller
    {
        // GET: Users/User
        public ActionResult Index()
        {
            return View();
        }
        [HttpGet]
        public ActionResult Choose(int? userId, int? locationId)
        {
            return View();
        }
    }
}

UsersAreaRegistration.cs:

namespace WebApplication3.Areas.Users
{
    public class UsersAreaRegistration : AreaRegistration 
    {
        public override string AreaName 
        {
            get 
            {
                return "Users";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context) 
        {
            context.MapRoute(
                "User_Choose",
                "Users/{controller}/{action}/{userId}/{locationId}",
                    new { controller = "Reward", action = "Choose", userId = UrlParameter.Optional }
            );
        }
    }
}

Global.asax中:

namespace WebApplication3
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

而且,我总是使用在Chose()方法中提供的url来获得两个值。 实际的问题可能出在您的命名空间中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM