我在asp.net的page_load事件中使用以下代码
protected void Page_Load(object sender, EventArgs e)
{
lblDate.Text = System.DateTime.Now.ToLongDateString();
if(!IsPostBack)
{
setImageUrl();
}
}
protected void Timer1_Tick(object sender, EventArgs e)
{
setImageUrl();
}
private void setImageUrl()
{
Random rnd = new Random();
int i = rnd.Next(1, 7);
Image1.ImageUrl ="~/SlideImages/"+ i.ToString() + ".gif";
}
代码在页面加载事件中运行良好但是当我单击任何其他菜单项时它会给我以下错误消息
对象引用未设置为对象的实例。
答案 0 :(得分:0)
好吧,我95%确定 i 为null,因为当你使用ToString()和object时,如果它为null,则会抛出一个致命的异常。我要做的是在抛出错误的行上设置一个断点,并在调试模式下运行该项目,看看我正在返回什么。如果它为null则存在问题。所以你必须找出你的随机方法没有正确实例化的原因。
另外一个建议是在该行上也做一个String.Format
Image1.ImageUrl = String.Format("~/SlideImages/{0}.gif", i);
只要 i 有效,并且String.Format将null格式化为空字符串,这将为您提供相同的结果集。所以你会有一个优雅的失败,你的形象不会出现,这意味着你知道你的问题。