【Dongle】【牛腩新闻发布系统】之上下文中不存在XXX名称

42 篇文章 0 订阅
27 篇文章 0 订阅

前言……       

       今天在学习牛腩新闻发布系统时,感觉很有收获,因为自从上午遇到一个问题,这一天间歇式的查找,终于找到了一篇启发我灵感的博客,然后找到了问题的所在。瞬间感觉今天运气暴崩!哈哈~

       废话不多说,问题在标题上写明了,可能大家还不清楚具体什么问题吧。那我就展示几张图,让大家看看问题是什么:




       问题就是我再设计器的编译代码中插入了控件Repeater控件,并且明明命名ID=repCategory,在窗体代码中也能够读取出来,窗体也能显示出来,但是在编译过程中去不能完成编译,提示错误repCategory不存在!!!这是什么鬼?

       如果这个程序不是我设计的,只看错误,我第一印象就是这个控件肯定没插入了,要不就是命名不正确。但显然不是这样的!那么是怎么一回事呢?这时候百度的作用就又发挥巨大作用了!第一次查了大概20分钟,找了很久的问题,虽然没有具体到我这个问题的答案,但是我总结出来的就是将原aspx删了重新创建。这个方法我也尝试了,很正确。当然,前提我也将之前的错误版本保存了。


后续……

       这样就算没事了吗?答案是如果你认为没事了那就是没事了,反之则是很重要!如果是你,你会如何想?

       解决问题了,我就继续向下看视频。只不过心里不平静了。为什么只能删了才能成功,不删就一定不能解决吗?然后好奇心就怂恿我去查。当然查的结果和之前查到的都大同小异,并行不悖!

这个事就一直僵持着,休息的时间就去上网查,查来查去还是一个样。这件事持续到了晚上,终于有了一个好的头绪。因为突然浏览导了一篇博客,是关于介绍控件名不存在的问题。asp.Net中“当前上下文中不存在名称XXX”的解决方法

       其实里面具体的内容,我只看懂了“这时会出现两个不同的.aspx文件有一个相同的类代码,只要一方发生改变,另一个当然就会出错了”。这句话让我想起复制过Default.aspx文件代码。因为视频中有备份的一段,然后我也就照葫芦画瓢跟着做了。我赶紧查备份的aspx文件和目前用的aspx文件,结果发现两份完全一致。一致会怎样?我又打开了我创建的其他aspx文件,发现他们之间存在唯一标识,那就是:

<%@ Page Title="" Language="C#" MasterPageFile="~/common.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="Default" %>


        原来错误是在这里:我备份的和我使用的aspx的文件开头的标识是相同的,也就是说两个文件除了外面名称不同,内部是一样的。并且内部定义的标识也是一样的CodeFile="Default.aspx.cs",从而导致我两个文件存在相同的控件、相同的名称!从而导致编译不成功。那么CodeFile具体是代表什么呢?


后经查找:

CodeFile指定指向页引用的代码隐藏文件的路径。 此特性与 Inherits 特性一起使用,用于将代码隐藏源文件与网页相关联。 此特性仅对编译的页有效。


与此,我顺便查了查Inherits的内涵:

       定义供页继承的代码隐藏类。 它可以是从 Page 类派生的任何类。 此特性与 CodeFile 特性一起使用,后者包含指向代码隐藏类的源文件的路径。

       如果 Inherits 特性不包含命名空间,ASP.NET 将检查 ClassName 特性是否包含命名空间。 如果包含ASP.NET 将尝试使用 ClassName 特性的命名空间加载 Inherits 特性中引用的类。 (这假定 Inherits 特性和 ClassName 特性使用同一命名空间。)

       Inherits 属性用于定义当前 Web 窗体所继承的代码隐藏类(该类是 System.Web.UI.Page 的派生类)。
       这个 inherits 属性只用于采用代码隐藏方式编写的 Web 窗体,也就是,如果你的代码全都是在 Web 窗体的标签中,就不必用这个属性了。


解决方法:

将CodeFile="XXX.aspx.cs",Inherits="XXX"(XXX为你创建的aspx文件名称)

        建议经过复制的代码aspx文件一定要检查两者不能相同!


至此,这件事才算有了一个比较好的结局……心里也踏实多了。最后我还对那位博主好好感谢了一番,也不知道他看到没有,哈哈~

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值