定义MVC路由和控制器

时间:2017-06-02 10:12:15

标签: asp.net-mvc

我定义了这个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 - 这应该引起该作者的特别引用。

我的控制器名称是作者控制器。这可行吗?如果是这样,我应该如何定义路线和行动方法来实现这一目标?

1 个答案:

答案 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获取示例