ASP.NET MVC 路由 404
ASP.NET MVC routing 404
我在默认的 mvc 项目中添加了一个新路由,如下所示:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name:"test",
url:"{controller}/{userId}/{action}/{cardId}",
defaults: new {controller="User", userId=UrlParameter.Optional, action="card", cardId=UrlParameter.Optional }
);
我有一个这样的操作方法(控制器名称为 "user"):
public ActionResult card(string userId, string cardId="")
{
if (string.IsNullOrEmpty(cardId))
{
return Json(new[]{
new {id=456, number="1234", name="ayj"},
new {id=123, number="2345", name="xxx"}
}, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { id = 123, number = "2345", name = "xxx" }, JsonRequestBehavior.AllowGet);
}
}
当我访问 /user/1/card/2
时,它 return 是正确的 json,但是当我访问 /user/1/card
时,我希望它是 return 一个数组, 但结果是 return 一个 404 error
。谁能帮帮我?
我认为当你使用 URL 而没有 cardId
时,路由引擎正在使用你的默认路由,因此 404,将你的自定义路由移到默认路由之上。
我在默认的 mvc 项目中添加了一个新路由,如下所示:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name:"test",
url:"{controller}/{userId}/{action}/{cardId}",
defaults: new {controller="User", userId=UrlParameter.Optional, action="card", cardId=UrlParameter.Optional }
);
我有一个这样的操作方法(控制器名称为 "user"):
public ActionResult card(string userId, string cardId="")
{
if (string.IsNullOrEmpty(cardId))
{
return Json(new[]{
new {id=456, number="1234", name="ayj"},
new {id=123, number="2345", name="xxx"}
}, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { id = 123, number = "2345", name = "xxx" }, JsonRequestBehavior.AllowGet);
}
}
当我访问 /user/1/card/2
时,它 return 是正确的 json,但是当我访问 /user/1/card
时,我希望它是 return 一个数组, 但结果是 return 一个 404 error
。谁能帮帮我?
我认为当你使用 URL 而没有 cardId
时,路由引擎正在使用你的默认路由,因此 404,将你的自定义路由移到默认路由之上。