2个可选的整数参数
本文关键字:整数 参数 2个 | 更新日期: 2023-09-27 17:53:26
我的用户控制器动作如下:
[HttpGet]
public ActionResult Choose(int? userId, int? locationId)
{
}
url看起来像:
/user/choose
或
/users/user/choose/{userId}/{locationId}
我试图将这个添加到我的区域路由:
context.MapRoute(
"User_Choose",
"Users/{controller}/{action}/{userId}/{locationId}",
new { Controller = "Reward", action = "Choose", userId = UrlParameter.Optional }
);
现在如果我进入一个URL,比如:
/users/user/choose/123/456
我看到userId参数有一个值,但是locationId总是空的。
有什么问题吗?
修复方法如下:
context.MapRoute(
"User_Choose",
"Users/{controller}/{action}/{userId}/{locationId}",
new { controller = "Reward", action = "Choose", userId = UrlParameter.Optional, locationId = UrlParameter.Optional}
);
你必须指定括号对于匿名对象的含义,即设置它们的默认值。
EDIT:实际上你的代码没有问题。我的控制器:
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获得两个值。实际的问题可能出在您的名称空间上。