简单的路由方案对我不起作用。
我的路线注册看起来像这样
context.MapRoute(
"Users_default",
"Users/{controller}/{action}/{id}",
new { action = "Index", id= UrlParameter.Optional });
我希望它能够满足
的要求users/profile/
users/profile/1
users/profile/2
使用以下控制器
public class ProfileController : Controller
{
public ActionResult Index(int? id)
{
var user = id == null ? (UserModel)HttpContext.Session["CurrentUser"] : userManager.GetUserById((int)id);
return View(user);
}
}
适用于users/profile
,但不适用于users/profile/1
我尝试了几件不同的东西,但我知道答案必须简单,只是我缺乏知识,我在这里缺少什么。
答案 0 :(得分:1)
这是因为您的路线解释为:
{controller: "profile", action: "1"}
。
您需要明确详细说明操作网址,如下所示:
users/profile/index/1
答案 1 :(得分:1)
我不希望索引出现。我想对users / profile / 1和users / profile /
使用相同的方法
然后不要将操作放入您的网址。
context.MapRoute(
"Users_default",
"Users/{controller}/{id}",
new { action = "Index", id= UrlParameter.Optional });
您定义的路由不允许索引是可选的,因为它后跟另一个参数(在本例中为#34; id")。除了默认路由外,只有最后一个参数可以是可选的。