MVC 路由 id 参数的正确使用

Correct usage of MVC route id parameter

我想在 asp.net mvc 中执行以下操作:

myquizsite.com/quizzes              - list quizzes available
myquizsite.com/quizzes/quiz1        - list previous instances of quiz1
myquizsite.com/quizzes/quiz2        - list previous instances of quiz2
myquizsite.com/quizzes/quiz1/create - create new quiz1

使用默认路由,这意味着 "create" 参数被传递到操作 quiz1 中以创建它的新实例。

这对我来说似乎很奇怪,所以我猜想有更好的方法,但我不确定怎么做。

使用 MVC 属性路由

public QuizzesController :Controller
{
   [Route("quizzes/{id?}")]
   public ActionResult Index(string id="")
   {
     if(!String.IsNullOrEmpty(id))
     {
       //to do  :Return quizzes available
     } 
     else
     {
       //To do :Return previous instances of id passed(Ex :quiz1/quiz2)
     }
   }
   [Route("quizzes/{id}/create")]
   public ActionResult Create(string id)
   {
      // to do  : return Create view for Id passed (Ex :quiz1/quiz2)
   }
}

您可以在 RouteConfig.cs 文件的 RegisterRoutes 方法中启用属性路由。

public static void RegisterRoutes(RouteCollection routes)
{            
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapMvcAttributeRoutes(); //This line enables attribute routing 
   //Default Route definition goes here
}