Обслуживать разные виды из одного действия контроллера в Asp.Net MVC 3? - PullRequest
2 голосов
/ 04 марта 2012

Я пытаюсь создать приложение Asp.Net MVC 3, в котором один метод Action в контроллере должен обрабатывать множество различных запросов и иметь возможность обслуживать представление с информацией о продукте, а продукт указан в параметре id. .

Причина в том, что пользователи (не программисты) хотят иметь возможность легко добавлять новые представления без необходимости добавлять методы действий и т. Д.

Каждый вид будет иметь элементы изображения с атрибутами src, относящимися к относительному пути (например, "images / image_1.svg")

Теперь, единственный способ, которым я мог придумать, это создать метод действия, который выглядит следующим образом:

//This takes a url with the format /Manuals/Product/id_sample, where the last is an id parameter
    public ActionResult Product(string id)
    {
        return View(id + "/" + id);           
    }

Причина, по которой я дважды объединяю путь к представлению с идентификатором, заключается в том, что у меня есть отдельная папка для каждого продукта с отдельной папкой "images" внутри.

Таким образом, представления находятся в структуре папок, которая выглядит следующим образом:

Views
     Manuals
            id_sample (this folder containing a view also called id_sample.cshtml)
                     images

Это служит правильному виду, если путь указан выше. Однако я понял, что это, вероятно, не очень хороший способ сделать это. Он создает URL, который не работает с относительными путями изображений.

Я получаю «ресурс не может быть найден» для изображений, и в инструменте веб-инспектора я вижу, что он ищет изображение по пути localhost / Manuals / Product / images / image_1.svg, что, конечно, не существует.

Так как я могу это сделать и использовать простые относительные пути для изображений в представлениях?

Обратите внимание, что представления создаются с использованием XSLT-преобразований из XML, поэтому здесь создаются все пути к изображениям.

Если есть совершенно другой способ сделать это, пожалуйста, скажите мне, я чувствую, что поступаю неправильно. И если решение связано с настройкой маршрутизации, пожалуйста, будьте очень подробны в объяснении, потому что я не очень хорошо понимаю механизм маршрутизации Asp.Net MVC ...

...