[英]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.