【发布时间】:2016-12-08 17:21:06
【问题描述】:
我的路线有一个小问题,我不能 100% 确定如何解决。
我有一个名为 Project 的控制器,我正在尝试进行以下 url 设置 site.com/project/(返回所有项目) site.com/project/GUID (site.com/Project/60724573-5949-48ee-873a-8f8e3ea7dd48) 返回单个项目(完全不同的视图)
项目负责人:
[RequireHttps]
public class ProjectController : Controller
{
[HttpGet]
// Get: /Project
public ActionResult Index()
{
// get list of projects and return list
return View();
}
[Route("Project/{id:Guid}")]
[HttpGet]
// Get: /Project/ID
public ActionResult Project(Guid id)
{
// get project object from DB based on ID passed
//return View(model);
return View();
}
}
在我的路线中,我尝试了 2 条路线设置:
第一:
routes.MapRoute(
name: "Project",
url: "{controller}/{action}",
defaults: new {controller = "Project", action = "Index"}
);
这让我可以让 /project/ 列出所有项目
我开始做一些研究,发现通过这样做我可以对路线做一些工作。
routes.MapRoute(
name: "AllProjects",
url: "Project/",
defaults: new
{
controller = "Project",
action = "Index"
});
然后我可以修改我的控制器来做这样的事情:
[Route("Project/")]
[ActionName("AllProjects")]
[HttpGet]
// Get: /Project
public ActionResult Index()
{
storeSession();
// get list of projects and return list
return View();
}
[Route("Project/{id}")]
[ActionName("SingleProject")]
[HttpGet]
// Get: /Project/ID
public ActionResult Index(Guid id)
{
storeSession();
// get project object from DB based on ID passed
//return View(model);
return View();
}
我似乎处于一个小僵局,我可以让一个工作但不能另一个(我可以轻松翻转它们,但我似乎无法让两者都工作。
感谢您对此提出的任何建议,并在此先感谢您。
【问题讨论】:
-
第一种使用属性路由的
Project操作方法有什么问题?您不需要添加AllProjects路由定义,因为属性路由会处理您的请求 url 要求。
标签: asp.net-mvc asp.net-mvc-routing