ADNStoreFront Multistore AddtoCartForm 函数崩溃页面

ADNStoreFront Multistore AddtoCartForm function crashing page

我正在尝试修改 Aspdotnetstorefront Multistore 的现有 XML 包。它是一个内部 XML 包,用于显示特定产品的变体。我一开始所做的是按原样复制粘贴整个代码并将其放入一个新的自定义 XML 包中。问题是它在原始包中工作正常,但在复制的包中却不行。当我尝试 运行 它时,函数“AddtoCartForm”使页面崩溃并显示以下错误,同时以红色显示包含函数调用的行:

此方法需要 HtmlHelper。确保在调用 RunXmlPackage 方法时指定一个

函数的格式为:

<xsl:value-of select="aspdnsf:AddtoCartForm(ProductID, VariantID, 1, 1, $SelectedSize, $SelectedColor)" disable-output-escaping="yes"/>

为了确定,我删除了带有函数的行,然后其他一切正常。我不知道这里出了什么问题。除非通过调用包的 url 的结构,否则一切都是相同的:

对于内部包是:\product3456

对于自定义包是:\topic\packagename?ProductID=123456

我检查了SP产生的XML、运行时间和请求的数据,这两种情况基本相同。 ProductID 和 VariantID 值 在那里。 SelectedColor 和 SelectedSize 在 XML 中 not(甚至在内部包中也不存在),因此它可能只是提供空值,而且可能没有必要。

还有更多。如果我像这样从 url 中抑制 productid 值:

\topic\packagename

它不会使页面崩溃(但也不会呈现,因为没有任何值需要处理)。

无论如何我不明白为什么它不能仅仅传递查询字符串中的变量(这基本上是它在原始包中所做的,即使是不同的格式)和它得到的 var 值(productid)那里。然而,似乎 url 格式确实不令人满意,但对我来说并没有太大意义。我已经过了好几天了,我所做的一切似乎都没有产生任何积极的结果。 :-(

我在网上查找了一些文档,但运气不佳,没有找到任何东西。在极端情况下,我会尝试联系 Vortx 支持(他们通常会回答我并提供一些有价值的线索),但这次似乎对于这个特定问题不会有任何帮助,除非我支付下流的小时费,不幸的是,这是不可能的...大声笑!

有什么想法吗?

更新:我们不使用 Multistore 常规搜索工具。由于我们产品(回收汽车零件)的性质,我们有一个自定义搜索工具,当我们没有确切的零件时,它会尝试找到 'similar' 可能满足用户需求的物品。我不知道您是否知道,但有几种机械汽车零件可以在不同型号和品牌之间互换(例如交流发电机、交流压缩机、电池、悬架、冷却系统等),所以当我们的一位客户需要修理零件时他的车他不会告诉我们零件代码;相反,他会告诉我们零件的车型、年份和通用名称,以便我们尝试为他找到零件。这确实意味着某个 Corolla 零件将完全适合本田雅阁等。有时我们有一些库存零件可能适合他的车,但我们不确定。当它发生时,我们将向客户展示这些零件,他将决定是否可以抓住机会。为了让客户感到舒适,我们希望在同一页面中显示所有这些部件,但由于它们通常是不同产品的变体,我们不能为此目的使用常规产品页面(因为产品页面只会显示一个产品的变体时间)。出于这个原因,我打算编写一个包 - 产品页面的修改版本 - 可以做到这一点,但我正在努力使用 AddtoCartForm 函数。事实上,我只是通过直接访问 /shoppingcart/addtocart 脚本将商品添加到购物车找到了一个解决方法,现在我的问题是在添加商品后强制它 return 到特定的 url到购物车...

该错误与能够正确填写 html 助手的主题标记有关。

我确实质疑为什么要对某个主题进行测试。为了测试新产品的 xmlpackage,我通常会在测试环境中更改仅针对一个产品的 xmlpackage。

如果无法更改产品 xmlpackage,那么我建议改用 XmlPackageController/engine。这在第 https://help.aspdotnetstorefront.com/1000/xml_packages.htm 页的“自行调用 XML 包”标题下进行了说明。如果使用 XmlPackageController,请确保 xmlpackage 中的 allowengine 属性设置为 true,否则也会引发错误。