我的路线存在轻微问题,我不能100%确定如何解决。
我有一个名为Project的控制器,我试图进行以下网址设置 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();
}
我似乎陷入了一个小小的僵局,我可以让一个人上班而不是另一个人(我可以轻松地翻转它们,但我似乎无法兼顾两者。
我感谢您对此提出的任何建议,并提前感谢。
答案 0 :(得分:0)
我设法解决了自己的问题。
在我的路线中,我回到了:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Project", action = "Index", id = UrlParameter.Optional}
在我的控制器中我必须执行以下操作:
[RequireHttps]
[RoutePrefix("Project")]
public class ProjectController : Controller
{
[Route]
[HttpGet]
// Get: /Project
public ActionResult Index()
{
// get list of projects and return list
return View();
}
[Route("{id}")]
[HttpGet]
// Get: /Project/ID
public ActionResult Index(Guid id)
{
// get project object from DB based on ID passed
//return View(model);
return View();
}