Маршрут ASP.NET MVC3 для статических файлов .cshtml - PullRequest
1 голос
/ 31 мая 2011

Я добавляю некоторые файлы .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

URL должны быть:

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 ]

2 голосов
/ 31 мая 2011

Обычно статический контент должен находиться в каталоге контента, но я понимаю, почему вы не хотите этого делать.Я хотел бы рассмотреть возможность использования частичных представлений для конкретных транспортных средств, а затем использовать логику в базовом представлении для этого производителя, чтобы определить, показывать ли общий код или частичное представление для конкретного вида на основе модели.В вашем контроллере добавьте еще один параметр для модели автомобиля (обратите внимание, я переименовал 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 );
}

Views (audi.cshtml)

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

Тогда ваша папка вида структурируется как

 dealership/audi.cshtml
 dealership/audi-audi-a6.cshtml
 ...
0 голосов
/ 31 мая 2011

это не работает, потому что поиск по структуре для представления с именем "audi-A6", но его не существует. Его зовут "audiA6". Попробуйте изменить имя представления в "audi-A6.cshtml".

Надеюсь, это полезно

...