Sitefinity - C# - 获取用户电子邮件并将其输出到 div 中

问题描述 投票:0回答:1

我们正在开发一个 Sitefinity 项目,并试图找出如何获取将显示在 div 内的用户电子邮件。我们正在开发的网站很旧并且有很多问题,但这似乎是一个简单的请求。

这是我们实现的代码:

.母版页(客户端):包含 JS 和 div 的链接,用于保存输出。

<head runat="server">
    <title></title>
    <!-- Include your other head content -->
    <script src="~/Scripts/userEmailScript.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
        <!-- Your HTML content -->
        <div class="col-md-12">
            <div id="userEmailDiv"></div>
        </div>
    </form>

JS文件

document.addEventListener("DOMContentLoaded", function() {
    var userEmail = "<%= UserEmail %>";
    var userEmailElement = document.getElementById("userEmailDiv");
    if (userEmailElement) {
        userEmailElement.innerText = userEmail;
    }
});

.cs页面(服务器端)

using System;
using Telerik.Sitefinity.Security;
using Telerik.Sitefinity.Security.Model;

namespace YourNamespace
{
    public partial class YourPage : System.Web.UI.Page
    {
        protected string UserEmail { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // Your server-side C# code here
                // For example, fetching user email
                UserManager userManager = UserManager.GetManager();
                SitefinityProfile profile = userManager.GetUserProfile(); // Assuming the user is logged in
                UserEmail = profile.Email;
            }
        }
    }
}

刷新页面后,我们会得到以下值:<%= UserEmail %>,而不是实际的电子邮件地址。我的猜测是问题出在服务器端代码中。我研究了文档,但找不到解决方案或修复程序。有什么见解吗?谢谢你。

c# sitefinity
1个回答
0
投票

这里有几个问题:

  1. 这个标签:

    <%= UserEmail %>

只能在母版页或用户控件(ascx)中使用,但不能在.js文件中使用。

  1. 如果您启用了输出缓存(默认情况下),那么用户将由于缓存而看到其他用户的电子邮件。

  2. 因此,您可以在 DomContentLoaded 事件处理程序中调用此 api: /rest-api/login-status,这将为您提供登录用户的电子邮件和显示名称(如果有)。查看您的 sitefinity 版本是否有此 api 端点,如果没有,您可以查看 LoginStatus 小部件并查看它正在使用哪个端点。

© www.soinside.com 2019 - 2024. All rights reserved.