【问题标题】:NullReferenceException when using AjaxControlToolKit Gravatar control使用 AjaxControlToolKit Gravatar 控件时出现 NullReferenceException
【发布时间】:2013-02-06 18:05:31
【问题描述】:

每当我尝试在其中一个页面中添加 AjaxControlToolKit 的 Gravatar 控件时,都会出现以下错误:

我在页面顶部添加了库

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

控制为

<asp:Gravatar ID="Gravatar1" runat="server" Height="168px" Width="168px" />

Gravatar 控件在我网站的其他旧 ASP.NET 页面中运行良好。但是当我尝试在新页面中添加它时,它会出现上述异常。请告诉我为什么会发生异常以及如何解决?还有为什么在源错误中[没有相关的源代码行]?另请注意,我无法从工具箱将 gravatar 控件拖到此页面上。我必须编写上面的代码来添加控件。

【问题讨论】:

  • 你确定是因为ajaxrefrence
  • 是的,我试过删除它,当没有 Gravatar 时它工作正常

标签: c# asp.net ajax ajaxcontroltoolkit nullreferenceexception


【解决方案1】:

你需要设置头像的Email属性。

<%@ Register assembly="AjaxControlToolkit" 
  namespace="AjaxControlToolkit" tagprefix="act" %>

<act:Gravatar ID="Gravatar1" runat="server" Email="someone@somewhere.org" 
  Height="168px" Width="168px" />

更新

我刚刚查看了Gravatar.GetHash 方法。它的第一行是Email = Email.ToLower();。如果 Email 为 null,这将引发 null 异常。

【讨论】:

  • 我在 Page_Load() 处设置 email 属性,Gravatar1.Email = dops.getAuthEmail(up.getUserID());
  • Gravatar.GetHash(string Email) 抛出异常。您确定该电子邮件不为空吗?
  • @ShivaPareek 这个代码Gravatar1.Email = dops.getAuthEmail(up.getUserID()); 是否仅在初始页面加载时执行(包装在if(!IsPostback) 块中)?
  • 对不起,这是我的愚蠢错误。原因与@RichardSchneider 相同,即未设置电子邮件属性。但是我正在设置电子邮件属性,但由于调用数据库函数时出现异常,编译器无法访问分配代码。我忘记在我的代码中的 finally 块中添加此代码。谢谢理查德..:)
【解决方案2】:

如果您将电子邮件 ID 作为会话变量传递,请使用此

Email='' 其中“email”是您的会话变量。

否则,您只需将电子邮件 ID 放入电子邮件属性。就是这样 !

【讨论】:

    猜你喜欢
    • 2012-06-25
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多