用于静态.cshtml文件的ASP.NET MVC3路由

时间:2011-05-31 12:35:55

标签: asp.net-mvc asp.net-mvc-3 routing routes

我正在添加一些包含一些内容的.cshtml文件(没有动态加载,只是静态内容)

有几个文件: / Views是一个目录 /经销商是/ Views

中的目录
Views - Dealership - About.cshtml
Views - Dealership - Testimonials.cshtml
Views - Dealership - Audi.cshtml
Views - Dealership - AudiA6.cshtml
Views - Dealership - AudiA8.cshtml
Views - Dealership - BMW.cshtml
Views - Dealership - BMW5.cshtml
Views - Dealership - BMW7.cshtml

网址应该是:

www.mywebsite.com/dealership/about
www.mywebsite.com/dealership/testimonials
www.mywebsite.com/dealership/audi
www.mywebsite.com/dealership/audi/audi-A6
www.mywebsite.com/dealership/audi/audi-A8
www.mywebsite.com/dealership/bmw
www.mywebsite.com/dealership/bmw/bmw-5

路线应该如何?我有这个:

    routes.MapRoute(
        "Dealership", // Route name
        "dealership/{action}/{id}", // URL with parameters
        new { controller = "Dealership", action = "Index", id = string.Empty }); // Parameter defaults

适用于

www.mywebsite.com/dealership/audi

www.mywebsite.com/dealership/testimonials

但我不知道如何为

创建路线

www.mywebsite.com/dealership/audi/audi-A6

我希望它不会太混乱; - )

2 个答案:

答案 0 :(得分:2)

一般情况下,静态内容应该放在Content目录中,但我可以看到为什么你不想这样做。我会考虑为特定车辆使用部分视图,然后在该制造商的基本视图中使用逻辑来确定是否显示基于模型的特定视图的通用代码或部分代码。在您的控制器中,为汽车模型添加另一个参数(注意,我已将id重命名为make)。

路线

routes.MapRoute(
        "Dealership", // Route name
        "dealership/{action}/{make}/{model}", // URL with parameters
        new { controller = "Dealership", action = "Index", make = string.Empty , model = UrlParameter.Optional }); // Parameter defaults

控制器

public ActionResult Index( string make, string model )
{
     return( make, model );
}

观看次数(audi.cshtml)

 @model string
 @if (string.IsNullOrEmpty(model)) {
    .. manufacturer html...
 }
 else
 {
    @Html.Partial( "audi-" + Model );
 }

然后将您的视图文件夹设置为

 dealership/audi.cshtml
 dealership/audi-audi-a6.cshtml
 ...

答案 1 :(得分:0)

由于框架搜索带有“audi-A6”名称的视图,它不起作用,但它不存在。它的名字是“audiA6”。 尝试在“audi-A6.cshtml”中更改视图名称。

我希望它有用