【发布时间】:2015-09-30 19:06:24
【问题描述】:
我正在开发一个分类网站,该网站将包含“electronics/mobiles/samsung/samsungS3/adTitle”之类的链接。如何在 asp.net 中创建类似的视图层次结构。如果答案是 HMVC,那么请参考一些链接,其中包含如何实现 HMVC 的完整指南。
【问题讨论】:
标签: asp.net-mvc
我正在开发一个分类网站,该网站将包含“electronics/mobiles/samsung/samsungS3/adTitle”之类的链接。如何在 asp.net 中创建类似的视图层次结构。如果答案是 HMVC,那么请参考一些链接,其中包含如何实现 HMVC 的完整指南。
【问题讨论】:
标签: asp.net-mvc
您不需要视图的层次结构,您应该使用Route Config,这将允许您根据 URL 获取所需的视图。
从 4 版本的 MVC 也有 areas 不仅默认控制和视图。因此,请查看此tutorial 以了解如何自定义您的路由。
【讨论】:
id = UrlParameter.Optional,您可以制作类似brand = UrlParameter.Optional 的东西并在您的控制器中使用它,例如可以帮助您的参数展示正确的广告。
您不需要在此层次结构中创建视图,但您需要以这种方式创建 URL,这称为友好 URL。
看下面的堆栈溢出问题 How can I create a friendly URL in ASP.NET MVC? 和 Friendly URL
您将定义另一条路线,该路线最终将使用您的单一操作方法。因此,您将在 routeConfig.cs 中添加一个路由,如下所示
routes.MapRoute(
name: "custom",
url: "{category}/{type}/{manufacturer}/{version}/{Title}",
defaults: new { controller = "Home", action = "customRoute"}
);
并且您的自定义操作将作为参数传入的所有值如下
public string customRoute(string category, string type, string manufacturer, string version, string Title)
{
return category + type + manufacturer + version + Title;
}
你也可以使用基于动作的路由来实现同样的效果
// eg: electronics/mobiles/samsung/samsungS3/adTitle
[Route("{category}/{type}/{manufacturer}/{Title}")]
public ActionResult Index(string cateogry, string type,string manfacture, string Title) { ... }
【讨论】: