2011-05-31 56 views
1

我加入一些.cshtml文件的一些内容(没有dynamicaly加载,只是一个静态内容)静态.cshtml文件

有几个文件ASP.NET MVC3路线: /视图是一个目录 /经销店是在目录/浏览次数

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

一般静态内容在内容目录应该去,但我可以看到,为什么你不希望这样做。我会考虑对特定车辆使用局部视图,然后使用基础视图中的逻辑来为该制造商确定是基于模型显示特定视图的通用代码还是局部视图。在您的控制器中,为汽车模型添加另一个参数(请注意,我已将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 
... 
0

它不工作怎么一回事,因为框架搜索与“奥迪A6”名称的视图,但它不存在。它的名字是“audiA6”。 尝试在“audi-A6.cshtml”中更改视图名称。

我希望这是有帮助的

+2

这是不正确的,现在框架认为audi-a6是一个参数,路由对视图一无所知,它只知道哪个控制器,动作和路由参数是其他的,Action知道要呈现哪个视图用户。 – Joakim 2011-05-31 12:50:22

+0

问题是www.mywebsite.com/dealership/audi route总是赢,即使我使用www.mywebsite.com/dealership/audi/audiA6 – nubm 2011-05-31 12:51:56

+0

@Joakim没错,我还没有见过奥迪/奥迪-A6,对不起 – Faber 2011-05-31 12:59:53