我正在创建一个用户也可以添加项目信息的系统。系统的一部分具有挂起项目的子表单。我试图了解如何设置路由,并想知道是否可以创建如下的路由。
/project/
/project/12345
/project/12345/bid - id is the same as the project e.g 12345
/project/12345/bid/create - id is the same as the project e.g 12345
/project/12345/bid/edit - id is the same as the project e.g 12345
这是一个好主意还是做得更好
/bid
/bid/create - id is the same as the project e.g 12345
/bid/12345 - id is the same as the project e.g 12345
/bid/12345/edit - id is the same as the project e.g 12345
答案 0 :(得分:0)
没有太大的区别。但我会建议你使用第一个版本。除了/project
之外的其他内容可以在以后出现。此类网址也更加明显和自我描述。
要实现这一点,请查看attribute routing。它将完美地满足您的需求。
示例:
[RoutePrefix("project")]
public class ProjectController : Controller
{
// eg: /project
[Route("")]
public ActionResult Index() { ... }
// eg: /project/1234
[Route("{projectID:int}")]
public ActionResult Project(int projectID) { ... }
// eg: /project/1234/bid
[Route("{projectID:int}/bid")]
public ActionResult Bid(int projectID) { ... }
// eg: /project/1234/bid/create
[Route("{projectID:int}/bid/create")]
Public ActionResult CreateBid(int projectID) { ... }
// so on
}
不要忘记注册这样的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// other routes if you need
routes.MapMvcAttributeRoutes();
}
答案 1 :(得分:0)
除非是公共网站,否则我会选择以下内容,然后我会在SEO的网址中添加小描述。
/出价/ 789
/出价/创建
/出价/编辑/ 12345
routes.MapRoute(
name: "Default",
url: "{controller}/{id}/{action}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);