我定义了这个mvc路线。
routes.MapRoute(
name: "Author",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Author", action = "Index", id = UrlParameter.Optional }
);
所以我的网址会是这样的:
http://mysitename.com/Author/AuthorName - 这应该带来特定作者的所有引用。 http://mysitename.com/Author/Authorname/QuoteID - 这应该引起该作者的特别引用。
我的控制器名称是作者控制器。这可行吗?如果是这样,我应该如何定义路线和行动方法来实现这一目标?
答案 0 :(得分:2)
您通常会有两个单独的方法,一个用于报价列表,另一个用于特定报价的详细信息。假设他们是
public ActionResult Quotes(string author)
和
public ActionResult QuoteDetails(string author, int id)
你的路线定义是
routes.MapRoute(
name: "AuthorQuotes",
url: "Author/{author}",
defaults: new { controller = "Author", action = "Quotes" }
);
routes.MapRoute(
name: "QuoteDetails",
url: "Author/{author}/{id}",
defaults: new { controller = "Author", action = "QuoteDetails" }
);
这两个都需要在默认路由之前。
作为旁注,第二条路线不需要作者姓名,您可以使用id
参数,并考虑使用' slug'作者姓名的路线(参考this answer获取示例