Я пытаюсь изменить существующий XML-пакет Aspdotnetstorefront Multistore. Это внутренний XML-пакет для отображения вариантов определенного продукта. Для начала я скопировал и вставил весь код как есть и поместил его в новый пользовательский XML-пакет. Проблема в том, что он отлично работает в оригинальном пакете, но не в скопированном. Когда я пытаюсь запустить его, функция AddtoCartForm приводит к сбою страницы и показывает следующую ошибку, в то время как красным цветом отображается строка, содержащая вызов функции:
Для этого метода требуется HtmlHelper. Обязательно укажите его при вызове метода RunXmlPackage
Формат функции:
<xsl:value-of select="aspdnsf:AddtoCartForm(ProductID, VariantID, 1, 1, $SelectedSize, $SelectedColor)" disable-output-escaping="yes"/>
Я удалил строку с функцией, чтобы быть уверенным, и тогда все остальное работает нормально. Я понятия не имею, что здесь не так. Все идентично, если только не структура URL-адреса, который вызывает пакет:
Для внутреннего пакета это: \product\123456
Для пользовательского пакета это: \topic\packagename?ProductID=123456
Я проверил XML, созданный SP, среду выполнения и запрошенные данные, и в обоих случаях они в основном одинаковы. Значения ProductID и VariantID находятся там. SelectedColor и SelectedSize нет в XML (даже во внутреннем пакете), поэтому они могут просто предоставлять нулевое значение и, возможно, в этом нет необходимости.
И это еще не все. Если я отключу значение productid из URL-адреса следующим образом:
\topic\packagename
Это не приведет к сбою страницы (но также не будет отображаться, потому что не будет никакого значения для обработки).
В любом случае я не понимаю, почему это не сработает, просто передав переменную в строке запроса (это в основном то, что она делает в исходном пакете, даже в другом формате) и значение var (productid), которое она получит. Однако кажется, что это действительно формат URL-адреса, который не нравится пакету, но для меня это не имеет особого смысла. Я занимаюсь этим уже несколько дней, и ничего из того, что я делаю, кажется, не дает никакого положительного результата. :-(
Я искал в Интернете некоторую документацию, но мне не повезло, и я не нашел абсолютно ничего. В крайних случаях я пытаюсь связаться со службой поддержки Vortx (и они обычно отвечают мне, давая какую-то ценную подсказку), но на этот раз кажется, что для этого конкретного вопроса не будет никакой помощи, если я не заплачу непристойную плату за час, и, к сожалению, это исключено. ... Смешной!
Есть идеи?
ОБНОВЛЕНИЕ. Мы не используем обычный инструмент поиска в мультимагазине. Из-за характера нашей продукции (переработанные автомобильные детали) у нас есть настраиваемый инструмент поиска, который попытается найти «похожие» элементы, которые МОГУТ соответствовать потребностям пользователя, когда у нас нет ТОЧНОЙ детали. Я не знаю, знаете ли вы, но некоторые механические части автомобиля взаимозаменяемы между разными моделями и производителями (например, генераторы переменного тока, компрессоры переменного тока, аккумулятор, подвеска, система охлаждения и т. д.), поэтому, когда одному из наших клиентов нужна деталь для ремонта код своей машины он нам не говорит; вместо этого он сообщит нам модель автомобиля, год выпуска и общее название детали, чтобы мы попытались найти для него деталь. Это означает, что определенная часть Corolla идеально подходит для Honda Accord и так далее. Иногда у нас есть запасные части, которые МОГУТ подойти к его машине, но мы не уверены в этом. Когда это произойдет, мы покажем эти детали клиенту, и он решит, может ли он рискнуть. Ради удобства клиентов мы хотим показать все эти части на одной странице, но, поскольку они обычно являются вариантами разных продуктов, мы не можем использовать обычную страницу продукта для этой цели (поскольку на странице продукта будут отображаться только варианты ОДНОГО продукта в время). По этой причине я собираюсь написать пакет — модифицированную версию страницы продукта — который сделает это, но я борюсь с функцией AddtoCartForm. На самом деле, я ПРОСТО нашел обходной путь, добавив товар в корзину, напрямую обращаясь к сценарию /shoppingcart/addtocart, и теперь моя проблема заключается в том, чтобы заставить его вернуться к определенному URL-адресу после добавления товара в корзину... эм>