实体上的 属性 作为 ASP.NET MVC 中的路由值
A property on entity as route value in ASP.NET MVC
我正在 ASP.NET MVC 5 中开发一个新项目。在许多很酷的网站上,您经常会看到这样的路由:
www.website.com/artist/vincent-van-gogh/wiki
www.website.com/artist/vincent-van-gogh/paintings
所以假设我有一个如下所示的实体 Artist
:
namespace BB.DOMAIN.Entities
{
public class Artist
{
public int Id { get; set; }
public string Name { get; set; }
}
}
而且我想通过 URL 中的 .Name
属性 查看任何给定艺术家的详细信息,如上所示?
有没有一种方法可以在 ASP.NET MVC 中实现这一点,而无需创建数千个独特的路由?
你会有这样的路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{artistName}/{action}",
defaults: new { controller = "Artist", action = "Index" }
);
然后在您的 ArtistController
中您将执行如下操作:
public ActionResult Wiki(string artistName)
{
var artist = MyContext.Artists.SingleOrDefault(x => x.Name == artistName);
//now you have the artist you want.
}
我正在 ASP.NET MVC 5 中开发一个新项目。在许多很酷的网站上,您经常会看到这样的路由:
www.website.com/artist/vincent-van-gogh/wiki
www.website.com/artist/vincent-van-gogh/paintings
所以假设我有一个如下所示的实体 Artist
:
namespace BB.DOMAIN.Entities
{
public class Artist
{
public int Id { get; set; }
public string Name { get; set; }
}
}
而且我想通过 URL 中的 .Name
属性 查看任何给定艺术家的详细信息,如上所示?
有没有一种方法可以在 ASP.NET MVC 中实现这一点,而无需创建数千个独特的路由?
你会有这样的路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{artistName}/{action}",
defaults: new { controller = "Artist", action = "Index" }
);
然后在您的 ArtistController
中您将执行如下操作:
public ActionResult Wiki(string artistName)
{
var artist = MyContext.Artists.SingleOrDefault(x => x.Name == artistName);
//now you have the artist you want.
}