尝试确定用户是否已登录并显示名称

时间:2013-05-23 12:28:57

标签: asp.net aspdotnetstorefront

如果用户登录,则应显示welcome, [name],否则显示register link

使用aspdotnet店面 - 以下显示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>

我甚至在here上关注了第30页,但无济于事。

2 个答案:

答案 0 :(得分: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>

像迈克尔所说,确保你的选择元素格式正确。如果xslt标记不正确,则在尝试运行Xml包时会收到错误。

答案 1 :(得分: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="/">

并打开顶部的调试模式以帮助进行测试。