Label1.Text怎么会提示未将对象引用设置到对象的实例

jstzcl007 2015-08-12 07:45:13
网页中做了个用户登录区域,前台部分代码:
<div id="welcom" runat="server" class="bluehyperlink">
欢迎访问:<asp:Label ID="Label1" runat="server" NavigateUrl="#" Text="Label"></asp:Label>
/
<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="modipass.aspx" Text="修改口令"></asp:HyperLink>
</div>
发布后进入网页,输入用户名和口令,登录后无法打开新网页,提示“System.NullReferenceException: 未将对象引用设置到对象的实例”,并指出是Label1.Text = Request.Cookies["yhxm"].Value.ToString()这句出错,但在本机VS2010调试中没有问题。
新网页 Page_Load事件代码
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies["yhxm"];
if (cookie == null)
{
denglu.Visible = true;
welcom.Visible = false;
HyperLink1.NavigateUrl = "login.aspx?url=" + Request.RawUrl;
haihua.Visible = false;
kehu.InnerHtml = "<ul><li><a href=\"system.aspx\" Target=\"_blank\">系统首页</a></li><li><a>入库申请</a></li><li><a>出库申请</a></li><li><a>入库查询</a></li><li><a>出库查询</a></li></ul>";
}
else if (Request.Cookies["yhxm"].Value != "" || Request.Cookies["yhxm"].Value != null)
{
denglu.Visible = false;
welcom.Visible = true;
Label1.Text = Request.Cookies["yhxm"].Value.ToString();/////////////////////////////提示这句出错
if (Request.Cookies["ishaihua"].Value == "0")
{
haihua.Visible = false;
kehu.Visible = true;
}
else
{
haihua.Visible = true;
kehu.Visible = false;
}
}
}
开始以为是 Request.Cookies["yhxm"].Value出错,但测试后Request.Cookies["yhxm"]能读出数据。
后将出错这句改成Label1.Text = “能够读取数据”来测试,居然还是报错。我就不懂了Label1.Text =怎么还出错了,VS里能通过的。
...全文
392 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jstzcl007 2015-08-16
  • 打赏
  • 举报
回复
谢谢大家,原因找到了,居然是下一句if (Request.Cookies["ishaihua"].Value == "0")的原因,Request.Cookies["ishaihua"]的值为0,本机执行没问题,但网上就有问题,要解码,写成System.Web.HttpContext.Current.Server.UrlDecode(Request.Cookies["ishaihua"].Value)==“0”就行了,当然赋值的时候也要加上编码,要一一对应。原来都没加,本机能通过,网上过不了,现在都加了,本机网上都能过。 Label1.Text = Request.Cookies["yhxm"].Value.ToString();这句没问题,因为我用对话框显示Request.Cookies["yhxm"]的值,是对的,设置断点查看也是对的。 只知道中文要加码解码的,怎么数字也这样啊。 还是谢谢大家
贾谷瑶 2015-08-14
  • 打赏
  • 举报
回复
加一句判断: if(Request.Cookies["yhxm"]!=null) { Label1.Text = Request.Cookies["yhxm"].Value.ToString(); }
卷泥巴重来 2015-08-14
  • 打赏
  • 举报
回复
Request.Cookies["yhxm"]这个为null的时候.tostring()就出错了! 你得看一下传过来的这个yhxm有没有值! 或者你的参数名写错了, 或者你没给这个参数赋值(如果是动态绑定值,那么你看一下绑定时有没有绑到值)! 就这些原因了! 好好看一看
燕儿归 2015-08-14
  • 打赏
  • 举报
回复
这种错基本都是没判断非空,调试的时候加断点,看看是不是值是null还在那tostring呢
於黾 2015-08-14
  • 打赏
  • 举报
回复
if (Request.Cookies["yhxm"].Value != "" || Request.Cookies["yhxm"].Value != null) 这不是永远为真吗 一个东西这么可能同时是""和null
sy401042879 2015-08-14
  • 打赏
  • 举报
回复
引用
else if (Request.Cookies["yhxm"].Value != "" || Request.Cookies["yhxm"].Value != null)
首先你这句判断就有问题吧,应该是并且! 根据你说的,应该还是Request.Cookies["yhxm"].Value这个值为null,你ToString()后就报错了。 仔细再调试调试。
fei缘如水 2015-08-13
  • 打赏
  • 举报
回复
你这报错就是为空的报错,调试一步步看值,放数据库里看看有没有数据
  • 打赏
  • 举报
回复
这个不看代码一般都知道是把一个null值赋给了text。。。
hwyqy 2015-08-12
  • 打赏
  • 举报
回复
设置断点,单步调试。另外,楼上说的全是问题 另外 已经有了HttpCookie cookie = Request.Cookies["yhxm"]; 为什么还要用 这么复杂的Request.Cookies["yhxm"].Value != "" || Request.Cookies["yhxm"].Value != null? 有种可能,你的aspx的设计文件未保存
ajianchina 2015-08-12
  • 打赏
  • 举报
回复
<asp:Label ID="Label1" runat="server" NavigateUrl="#" Text="Label"></asp:Label> 这个属性是你创造出来的吗?
jstzcl007 2015-08-12
  • 打赏
  • 举报
回复
回复2楼: 我用对话框显示Request.Cookies["yhxm"]的值,显示正确啊,这能说明Request.Cookies["yhxm"]的值是有效能读出的吧。
  • 打赏
  • 举报
回复
Request.Cookies["yhxm"]没取到值……
  • 打赏
  • 举报
回复
贴出你的调试画面,证明你学习编程时已经学到调试技巧这个课程了。 对于一些纯粹的自学者没有学过调试,则几乎无法回答问题。因为他们不调试。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧