【问题标题】:how to create hierarchy of pages in asp.net MVC如何在 asp.net MVC 中创建页面层次结构
【发布时间】:2015-09-30 19:06:24
【问题描述】:

我正在开发一个分类网站,该网站将包含“electronics/mobiles/samsung/samsungS3/adTitle”之类的链接。如何在 asp.net 中创建类似的视图层次结构。如果答案是 HMVC,那么请参考一些链接,其中包含如何实现 HMVC 的完整指南。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您不需要视图的层次结构,您应该使用Route Config,这将允许您根据 URL 获取所需的视图。

    从 4 版本的 MVC 也有 areas 不仅默认控制和视图。因此,请查看此tutorial 以了解如何自定义您的路由。

    【讨论】:

    • 谢谢,但我想要的是每个链接都应该有单独的查询,比如如果链接以“mobiles”结尾,它将显示手机中的所有广告,如果它以“samsung”结尾,它将显示所有三星等手机广告
    • @IrfanWattoo 您在谈论控制器参数,您可以在路由中使用它们,例如默认示例中的id = UrlParameter.Optional,您可以制作类似brand = UrlParameter.Optional 的东西并在您的控制器中使用它,例如可以帮助您的参数展示正确的广告。
    • 所有类型的广告只有一个视图显示,但查询会有所不同
    【解决方案2】:

    您不需要在此层次结构中创建视图,但您需要以这种方式创建 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) { ... }
    

    【讨论】:

    • 谢谢haseeb,但我不想制作友好的网址。每个链接都应该有单独的查询,例如链接是否以“mobiles”结尾,它将显示手机中的所有广告,如果以“samsung”结尾,它将显示三星的所有移动广告等等。
    • 您也可以使用这种方法实现这一目标。为每个移动制造商创建单独的文件夹是不可扩展的(可扩展),因为您需要不时添加新的供应商。
    • 只有一种视图可以展示广告,但查询会有所不同。这就是我想要的
    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多