0

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 の構造が異なる場合を除き、すべてが同一です。

内部パッケージの場合は次のとおりです。\product\123456

カスタム パッケージの場合は次のとおりです。\topic\packagename?ProductID=123456

SP によって生成された XML、ランタイム、および要求されたデータを確認しましたが、どちらの場合も基本的に同じです。ProductID と VariantID の値あります。SelectedColor と SelectedSize はXML に含まれていない(内部パッケージにも含まれていない) ため、null 値を提供するだけであり、おそらく必要ありません。

そして、もっとあります。次のように URL から productid 値を抑制した場合:

\topic\packagename

ページがクラッシュすることはありません (ただし、処理する値がないためレンダリングされません)。

とにかく、変数をクエリ文字列に渡すだけでは機能しない理由がわかりません (これは、基本的に、元のパッケージで別の形式でも行うことです) var 値 (productid) がそこに到達します。ただし、実際にはパッケージを喜ばせないのはURL形式のようですが、私にはあまり意味がありません。私はすでに数日間これを乗り越えていますが、何をしても良い結果が得られないようです. :-(

いくつかのドキュメントをオンラインで検索しましたが、運が悪く、何も見つかりませんでした。極端な場合は、Vortx サポートに連絡を取ろうとします (そして、彼らは通常、価値のある手がかりを提供してくれます)、今回は、この特定の問題については、わいせつな時間料金を支払わない限り、何の助けにもならないようです。残念ながら、それは問題外です... 笑!

何か案が?

更新: Multistore の通常の検索ツールは使用しません。当社の製品 (リサイクルされた自動車部品) の性質上、正確な部品がない場合でも、ユーザーのニーズに適合する可能性のある「類似の」アイテムを見つけようとするカスタム検索ツールがあります。あなたが知っているかどうかはわかりませんが、いくつかの機械部品は異なるモデルやメーカー間で交換可能です (オルタネーター、AC コンプレッサー、バッテリー、サスペンション、冷却システムなど)。彼の車は部品コードを教えてくれません。代わりに、彼は車のモデル、年式、部品の一般名を教えてくれるので、彼に代わって部品を見つけようとします. それは、特定のカローラの部品がホンダ アコードなどに完全に適合することを意味します。時々、彼の車に合うかもしれないいくつかの部品の在庫がありますが、絶対に確信はありません. それが起こったとき、私たちは顧客のためにそれらの部品を見せ、彼は彼がチャンスをつかむことができるかどうかを決定します. お客様の快適さのために、これらすべての部品を同じページに表示したいと考えていますが、通常は異なる製品のバリエーションであるため、通常の製品ページをこの目的に使用することはできません (製品ページには 1 つの製品のバリエーションのみが表示されるため)。時間)。このため、それを行うパッケージ (製品ページの修正版) を作成しようとしていますが、AddtoCartForm 関数に苦労しています。実際、 /shoppingcart/addtocart スクリプトに直接アクセスしてカートにアイテムを追加することで回避策を見つけましたが、アイテムをショッピングカートに追加した後、特定のURLに強制的に戻すことが問題です... お客様の快適さのために、これらすべての部品を同じページに表示したいと考えていますが、通常は異なる製品のバリエーションであるため、通常の製品ページをこの目的に使用することはできません (製品ページには 1 つの製品のバリエーションのみが表示されるため)。時間)。このため、それを行うパッケージ (製品ページの修正版) を作成しようとしていますが、AddtoCartForm 関数に苦労しています。実際、 /shoppingcart/addtocart スクリプトに直接アクセスしてカートにアイテムを追加することで回避策を見つけましたが、アイテムをショッピングカートに追加した後、特定のURLに強制的に戻すことが問題です... お客様の快適さのために、これらすべての部品を同じページに表示したいと考えていますが、通常は異なる製品のバリエーションであるため、通常の製品ページをこの目的に使用することはできません (製品ページには 1 つの製品のバリエーションのみが表示されるため)。時間)。このため、それを行うパッケージ (製品ページの修正版) を作成しようとしていますが、AddtoCartForm 関数に苦労しています。実際、 /shoppingcart/addtocart スクリプトに直接アクセスしてカートにアイテムを追加することで回避策を見つけましたが、アイテムをショッピングカートに追加した後、特定のURLに強制的に戻すことが問題です... ただし、それらは通常、異なる製品のバリエーションであるため、この目的で通常の製品ページを使用することはできません (製品ページには一度に 1 つの製品のバリエーションしか表示されないため)。このため、それを行うパッケージ (製品ページの修正版) を作成しようとしていますが、AddtoCartForm 関数に苦労しています。実際、 /shoppingcart/addtocart スクリプトに直接アクセスしてカートにアイテムを追加することで回避策を見つけましたが、アイテムをショッピングカートに追加した後、特定のURLに強制的に戻すことが問題です... ただし、それらは通常、異なる製品のバリエーションであるため、この目的で通常の製品ページを使用することはできません (製品ページには一度に 1 つの製品のバリエーションしか表示されないため)。このため、それを行うパッケージ (製品ページの修正版) を作成しようとしていますが、AddtoCartForm 関数に苦労しています。実際、 /shoppingcart/addtocart スクリプトに直接アクセスしてカートにアイテムを追加することで回避策を見つけましたが、アイテムをショッピングカートに追加した後、特定のURLに強制的に戻すことが問題です...

4

1 に答える 1

1

エラーは、適切に入力された html ヘルパーを取得できるトピック トークンに関係しています。

あるトピックでテストが行​​われている理由に疑問があります。新しい製品の xmlpackage をテストするには、通常、テスト環境で 1 つの製品だけの xmlpackage を変更します。

製品の xmlpackage を変更できない場合は、代わりに XmlPackageController/engine を使用することをお勧めします。これは、ページhttps://help.aspdotnetstorefront.com/1000/xml_packages.htmの「自分で XML パッケージを呼び出す」という見出しの下に記載されています。XmlPackageController を使用する場合は、xmlpackage で allowengine 属性が true に設定されていることを確認してください。そうしないと、同様にエラーがスローされます。

于 2021-02-11T17:57:11.203 に答える