在ASP.NET LoginName控件中显示全名

时间:2009-03-11 10:12:51

标签: c# asp.net

我有一个使用自定义身份验证的登录控件的.aspx页面。我想知道是否可以使用LoginName控件而不是默认访问的[UserName]来获取“Welcome [FirstName] [LastName]”消息。

我正在考虑将这些信息存储在Session对象中,如果不可能的话。

谢谢!

4 个答案:

答案 0 :(得分:2)

您需要覆盖RenderContents方法或创建自己的LoginName控件。这样的事情可以解决问题:

protected override void RenderContents(HtmlTextWriter writer)
{
      if (string.IsNullOrEmpty(Profile.FullName))
            return;

      nameToDisplay = HttpUtility.HtmlEncode(Profile.FullName);
      string formatExpression = this.FormatString;
      if (formatExpression .Length == 0)
      {
            writer.Write(nameToDisplay);
      }
      else
      {
            try
            {
                  writer.Write(string.Format(CultureInfo.CurrentCulture, formatExpression, new object[1] { nameToDisplay });
            }
            catch (FormatException exception)
            {
                  throw new FormatException("Invalid FormatString", exception1);
            }
      }
}

此外,请参阅此处以获取有关working with LoginName的简短文章。

答案 1 :(得分:2)

在重定向页面中创建一个LoginName控件,它可能是Masterpage.aspx或任何其他页面。

<asp:LoginName ID="LoginName1" runat="server" />

然后在.cs文件中的page_load中插入这些代码行

protected void Page_Load(object sender, EventArgs e)
{
    //this can come from anywhere like session, database
    string fullName = "ABC XYZ";
    LoginName1.FormatString = "welcome" + " - " + fullName ; //output: welcome - ABC XYZ

    or

    LoginName1.FormatString = fullName; // output: ABC XYZ
}

这对你有帮助???

答案 2 :(得分:0)

首先,请参阅Personal names in a global application: What to store。即使你的网站仅限于美国,我也很确定我在这里见过一些外国人。

答案 3 :(得分:0)

您可以使用FormatString属性将欢迎消息设置为您想要的任何字符串。当与表达式构建器(例如<%$ expressionPrefix: expressionValue %>)结合使用时,您可以灵活地定义输出。