1

ログインしたユーザーの場合は が表示されwelcome, [name]、それ以外の場合は が表示されますregister link

aspdotnetstorefront の使用- 次の例では、 welcome,(ログイン名なし) とregister link?の両方が表示されます。うまく動作しないようです。

<xsl:when test="/root/System/CustomerFirstName!=''">
                            Welcome, <a href='/account.aspx'><xsl:value-of select="/root/System/CustomerFirstName" disable-output-escaping="yes" /></a>
                            </xsl:when>
                            <xsl:otherwise>
                            <a href='createaccount.aspx?checkout=False' class='register'>
                            Register </a>
                            </xsl:otherwise>
                            </xsl:choose>

ここで30ページもフォローしましたが、役に立ちませんでした。

4

2 に答える 2

1

代わりに CustomerIsRegistered ノードをチェックして、ユーザーが現在サインインして登録されているかどうかを判断することをお勧めします。値は「true」または「false」のいずれかになります。

これが実際の例です:

    <xsl:choose>
      <xsl:when test="/root/System/CustomerIsRegistered='true'">
        <!--Customer is registered-->
        <a href="account.aspx">
          <xsl:value-of select="concat('Welcome, ',/root/System/CustomerFirstName)"/>
        </a>
      </xsl:when>
      <xsl:otherwise>
        <!--Customer is not registered-->
        <a href="createaccount.aspx">
          <xsl:attribute name="class">register</xsl:attribute>
          <xsl:text>Register</xsl:text>              
        </a>
      </xsl:otherwise>
    </xsl:choose>

CustomerFirstName を確認したい場合は、文字列の長さが 0 より大きいかどうかをテストすることをお勧めします。例:

<xsl:when test="string-length(/root/System/CustomerFirstName) &gt; 0>

Michael が述べたように、Choose 要素が適切にフォーマットされていることを確認してください。xslt マークアップが正しくない場合、Xml パッケージを実行しようとするとエラーが発生するはずです。

于 2013-05-30T02:55:22.393 に答える
0

あなたはそれを持っているべきです。選択ノードで囲まれていることを確認してください。

          <xsl:choose>
            <xsl:when test="/root/System/CustomerFirstName!=''">
              Welcome, <a href='/account.aspx'>
                <xsl:value-of select="/root/System/CustomerFirstName" disable-output-escaping="yes" />
              </a>
            </xsl:when>
            <xsl:otherwise>
              <a href='createaccount.aspx?checkout=False' class='register'>
                Register
              </a>
            </xsl:otherwise>
          </xsl:choose>

の開始直後に配置してみてください

<xsl:template match="/">

テストに役立つように、上部でデバッグモードをオンにします。

于 2013-05-29T20:18:28.213 に答える