【发布时间】:2016-12-18 11:01:47
【问题描述】:
我在 Visual Studio 2015 Update 3 中创建了一个新的 ASP.NET MVC 5 项目,一切都很标准。我有这个控制器:
public class UsersController : BaseController
{
[HttpGet]
public async Task<ActionResult> Newest()
{
var newestUsers = await Database.Users.OrderByDescending(u => u.ID).Take(100).ToListAsync();
return View(newestUsers);
}
[HttpGet]
[Route("{id}")]
public async Task<ActionResult> GetUser(long id)
{
var user = await Database.Users.FindAsync(id);
return View(user);
}
}
我的 BaseController 派生自常规 MVC Controller,它包含我的应用程序的一些常见属性。没什么特别的。
当我转到 /users/newest 时,会加载相应的页面,但是当我转到 /users/1 时,我立即收到 404 not found 错误。我尝试将路线更改为~/{id},但无济于事。我的路由配置是标准的,自动生成的,我没碰过:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
为什么不点击GetUser 操作?
更新:由于某种原因,它再次开始无法正常工作。我什么也没做。在我添加 routes.MapMvcAttributeRoutes(); 后它仍然有效,但我又开始收到 404。
【问题讨论】:
-
看起来你的路由应该是 users/getuser/1。换句话说,你错过了行动部分或你的路线。
标签: asp.net asp.net-mvc